summaryrefslogtreecommitdiff
path: root/discord/objects.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'discord/objects.hpp')
-rw-r--r--discord/objects.hpp747
1 files changed, 0 insertions, 747 deletions
diff --git a/discord/objects.hpp b/discord/objects.hpp
deleted file mode 100644
index 7084efb..0000000
--- a/discord/objects.hpp
+++ /dev/null
@@ -1,747 +0,0 @@
-#pragma once
-#include <algorithm>
-#include <nlohmann/json.hpp>
-#include <vector>
-#include <string>
-#include "snowflake.hpp"
-#include "user.hpp"
-#include "role.hpp"
-#include "member.hpp"
-#include "channel.hpp"
-#include "guild.hpp"
-#include "usersettings.hpp"
-#include "message.hpp"
-#include "invite.hpp"
-#include "permissions.hpp"
-#include "emoji.hpp"
-#include "activity.hpp"
-#include "sticker.hpp"
-#include "ban.hpp"
-#include "auditlog.hpp"
-#include "relationship.hpp"
-#include "errors.hpp"
-
-// most stuff below should just be objects that get processed and thrown away immediately
-
-enum class GatewayOp : int {
- Event = 0,
- Heartbeat = 1,
- Identify = 2,
- UpdateStatus = 3,
- Resume = 6,
- Reconnect = 7,
- InvalidSession = 9,
- Hello = 10,
- HeartbeatAck = 11,
- LazyLoadRequest = 14,
-};
-
-enum class GatewayEvent : int {
- READY,
- MESSAGE_CREATE,
- MESSAGE_DELETE,
- MESSAGE_UPDATE,
- GUILD_MEMBER_LIST_UPDATE,
- GUILD_CREATE,
- GUILD_DELETE,
- MESSAGE_DELETE_BULK,
- GUILD_MEMBER_UPDATE,
- PRESENCE_UPDATE,
- CHANNEL_DELETE,
- CHANNEL_UPDATE,
- CHANNEL_CREATE,
- GUILD_UPDATE,
- GUILD_ROLE_UPDATE,
- GUILD_ROLE_CREATE,
- GUILD_ROLE_DELETE,
- MESSAGE_REACTION_ADD,
- MESSAGE_REACTION_REMOVE,
- CHANNEL_RECIPIENT_ADD,
- CHANNEL_RECIPIENT_REMOVE,
- TYPING_START,
- GUILD_BAN_REMOVE,
- GUILD_BAN_ADD,
- INVITE_CREATE,
- INVITE_DELETE,
- USER_NOTE_UPDATE,
- READY_SUPPLEMENTAL,
- GUILD_EMOJIS_UPDATE,
- GUILD_JOIN_REQUEST_CREATE,
- GUILD_JOIN_REQUEST_UPDATE,
- GUILD_JOIN_REQUEST_DELETE,
- RELATIONSHIP_REMOVE,
- RELATIONSHIP_ADD,
- THREAD_CREATE,
- THREAD_UPDATE,
- THREAD_DELETE,
- THREAD_LIST_SYNC,
- THREAD_MEMBER_UPDATE,
- THREAD_MEMBERS_UPDATE,
- THREAD_MEMBER_LIST_UPDATE,
-};
-
-enum class GatewayCloseCode : uint16_t {
- // standard
- Normal = 1000,
- GoingAway = 1001,
- ProtocolError = 1002,
- Unsupported = 1003,
- NoStatus = 1005,
- Abnormal = 1006,
- UnsupportedPayload = 1007,
- PolicyViolation = 1008,
- TooLarge = 1009,
- MandatoryExtension = 1010,
- ServerError = 1011,
- ServiceRestart = 1012,
- TryAgainLater = 1013,
- BadGateway = 1014,
- TLSHandshakeFailed = 1015,
-
- // discord
- UnknownError = 4000,
- UnknownOpcode = 4001,
- DecodeError = 4002,
- NotAuthenticated = 4003,
- AuthenticationFailed = 4004,
- AlreadyAuthenticated = 4005,
- InvalidSequence = 4007,
- RateLimited = 4008,
- SessionTimedOut = 4009,
- InvalidShard = 4010,
- ShardingRequired = 4011,
- InvalidAPIVersion = 4012,
- InvalidIntents = 4013,
- DisallowedIntents = 4014,
-
- // internal
- UserDisconnect = 4091,
- Reconnecting = 4092,
-};
-
-struct GatewayMessage {
- GatewayOp Opcode;
- nlohmann::json Data;
- std::string Type;
- int Sequence = -1;
-
- friend void from_json(const nlohmann::json &j, GatewayMessage &m);
-};
-
-struct HelloMessageData {
- int HeartbeatInterval;
-
- friend void from_json(const nlohmann::json &j, HelloMessageData &m);
-};
-
-struct MessageDeleteData {
- Snowflake ID; //
- Snowflake ChannelID; //
- Snowflake GuildID; // opt
-
- friend void from_json(const nlohmann::json &j, MessageDeleteData &m);
-};
-
-struct MessageDeleteBulkData {
- std::vector<Snowflake> IDs; //
- Snowflake ChannelID; //
- Snowflake GuildID; // opt
-
- friend void from_json(const nlohmann::json &j, MessageDeleteBulkData &m);
-};
-
-struct GuildMemberListUpdateMessage {
- struct Item {
- virtual ~Item() = default;
-
- std::string Type;
- };
-
- struct GroupItem : Item {
- std::string ID;
- int Count;
-
- friend void from_json(const nlohmann::json &j, GroupItem &m);
- };
-
- struct MemberItem : Item {
- UserData User;
- std::vector<Snowflake> Roles;
- std::optional<PresenceData> Presence;
- std::string PremiumSince; // opt
- std::string Nickname; // opt
- bool IsMuted;
- std::string JoinedAt;
- std::string HoistedRole; // null
- bool IsDefeaned;
-
- GuildMember GetAsMemberData() const;
-
- friend void from_json(const nlohmann::json &j, MemberItem &m);
-
- private:
- GuildMember m_member_data;
- };
-
- struct OpObject {
- std::string Op;
- std::optional<int> Index;
- std::optional<std::vector<std::unique_ptr<Item>>> Items; // SYNC
- std::optional<std::pair<int, int>> Range; // SYNC
- std::optional<std::unique_ptr<Item>> OpItem; // UPDATE
-
- friend void from_json(const nlohmann::json &j, OpObject &m);
- };
-
- int OnlineCount;
- int MemberCount;
- std::string ListIDHash;
- std::string GuildID;
- std::vector<GroupItem> Groups;
- std::vector<OpObject> Ops;
-
- friend void from_json(const nlohmann::json &j, GuildMemberListUpdateMessage &m);
-};
-
-struct LazyLoadRequestMessage {
- Snowflake GuildID;
- std::optional<bool> ShouldGetTyping;
- std::optional<bool> ShouldGetActivities;
- std::optional<bool> ShouldGetThreads;
- std::optional<std::vector<std::string>> Members; // snowflake?
- std::optional<std::map<Snowflake, std::vector<std::pair<int, int>>>> Channels; // channel ID -> range of sidebar
- std::optional<std::vector<Snowflake>> ThreadIDs;
-
- friend void to_json(nlohmann::json &j, const LazyLoadRequestMessage &m);
-};
-
-struct UpdateStatusMessage {
- int Since = 0;
- std::vector<ActivityData> Activities;
- PresenceStatus Status;
- bool IsAFK = false;
-
- friend void to_json(nlohmann::json &j, const UpdateStatusMessage &m);
-};
-
-struct ReadyEventData {
- int GatewayVersion;
- UserData SelfUser;
- std::vector<GuildData> Guilds;
- std::string SessionID;
- std::vector<ChannelData> PrivateChannels;
-
- // undocumented
- std::optional<std::vector<UserData>> Users;
- std::optional<std::string> AnalyticsToken;
- std::optional<int> FriendSuggestionCount;
- UserSettings Settings;
- std::optional<std::vector<std::vector<GuildMember>>> MergedMembers;
- std::optional<std::vector<RelationshipData>> Relationships;
- std::optional<std::vector<GuildApplicationData>> GuildJoinRequests;
- // std::vector<Unknown> ConnectedAccounts; // opt
- // std::map<std::string, Unknown> Consents; // opt
- // std::vector<Unknown> Experiments; // opt
- // std::vector<Unknown> GuildExperiments; // opt
- // std::map<Unknown, Unknown> Notes; // opt
- // std::vector<PresenceData> Presences; // opt
- // std::vector<ReadStateData> ReadStates; // opt
- // Unknown Tutorial; // opt, null
- // std::vector<GuildSettingData> UserGuildSettings; // opt
-
- friend void from_json(const nlohmann::json &j, ReadyEventData &m);
-};
-
-struct MergedPresence {
- Snowflake UserID;
- std::optional<uint64_t> LastModified;
- PresenceData Presence;
-
- friend void from_json(const nlohmann::json &j, MergedPresence &m);
-};
-
-struct SupplementalMergedPresencesData {
- std::vector<std::vector<MergedPresence>> Guilds;
- std::vector<MergedPresence> Friends;
-
- friend void from_json(const nlohmann::json &j, SupplementalMergedPresencesData &m);
-};
-
-struct ReadySupplementalData {
- SupplementalMergedPresencesData MergedPresences;
-
- friend void from_json(const nlohmann::json &j, ReadySupplementalData &m);
-};
-
-struct IdentifyProperties {
- std::string OS;
- std::string Browser;
- std::string Device;
- std::string SystemLocale;
- std::string BrowserUserAgent;
- std::string BrowserVersion;
- std::string OSVersion;
- std::string Referrer;
- std::string ReferringDomain;
- std::string ReferrerCurrent;
- std::string ReferringDomainCurrent;
- std::string ReleaseChannel;
- int ClientBuildNumber;
- std::string ClientEventSource; // empty -> null
-
- friend void to_json(nlohmann::json &j, const IdentifyProperties &m);
-};
-
-struct ClientStateProperties {
- std::map<std::string, std::string> GuildHashes;
- std::string HighestLastMessageID = "0";
- int ReadStateVersion = 0;
- int UserGuildSettingsVersion = -1;
-
- friend void to_json(nlohmann::json &j, const ClientStateProperties &m);
-};
-
-struct IdentifyMessage : GatewayMessage {
- std::string Token;
- IdentifyProperties Properties;
- PresenceData Presence;
- ClientStateProperties ClientState;
- bool DoesSupportCompression = false;
- int Capabilities;
-
- friend void to_json(nlohmann::json &j, const IdentifyMessage &m);
-};
-
-struct HeartbeatMessage : GatewayMessage {
- int Sequence;
-
- friend void to_json(nlohmann::json &j, const HeartbeatMessage &m);
-};
-
-struct CreateMessageObject {
- std::string Content;
- std::optional<MessageReferenceData> MessageReference;
- std::optional<std::string> Nonce;
-
- friend void to_json(nlohmann::json &j, const CreateMessageObject &m);
-};
-
-struct MessageEditObject {
- std::string Content; // opt, null
- std::vector<EmbedData> Embeds; // opt, null
- int Flags = -1; // opt, null
-
- friend void to_json(nlohmann::json &j, const MessageEditObject &m);
-};
-
-struct GuildMemberUpdateMessage {
- Snowflake GuildID; //
- std::vector<Snowflake> Roles; //
- UserData User; //
- std::string Nick; // opt, null
- std::string JoinedAt;
- std::string PremiumSince; // opt, null
-
- friend void from_json(const nlohmann::json &j, GuildMemberUpdateMessage &m);
-};
-
-struct ClientStatusData {
- std::optional<std::string> Desktop;
- std::optional<std::string> Mobile;
- std::optional<std::string> Web;
-
- friend void from_json(const nlohmann::json &j, ClientStatusData &m);
-};
-
-struct PresenceUpdateMessage {
- nlohmann::json User; // the client updates an existing object from this data
- std::optional<Snowflake> GuildID;
- std::string StatusMessage;
- std::vector<ActivityData> Activities;
- ClientStatusData ClientStatus;
-
- friend void from_json(const nlohmann::json &j, PresenceUpdateMessage &m);
-};
-
-struct CreateDMObject {
- std::vector<Snowflake> Recipients;
-
- friend void to_json(nlohmann::json &j, const CreateDMObject &m);
-};
-
-struct ResumeMessage : GatewayMessage {
- std::string Token;
- std::string SessionID;
- int Sequence;
-
- friend void to_json(nlohmann::json &j, const ResumeMessage &m);
-};
-
-struct GuildRoleUpdateObject {
- Snowflake GuildID;
- RoleData Role;
-
- friend void from_json(const nlohmann::json &j, GuildRoleUpdateObject &m);
-};
-
-struct GuildRoleCreateObject {
- Snowflake GuildID;
- RoleData Role;
-
- friend void from_json(const nlohmann::json &j, GuildRoleCreateObject &m);
-};
-
-struct GuildRoleDeleteObject {
- Snowflake GuildID;
- Snowflake RoleID;
-
- friend void from_json(const nlohmann::json &j, GuildRoleDeleteObject &m);
-};
-
-struct MessageReactionAddObject {
- Snowflake UserID;
- Snowflake ChannelID;
- Snowflake MessageID;
- std::optional<Snowflake> GuildID;
- std::optional<GuildMember> Member;
- EmojiData Emoji;
-
- friend void from_json(const nlohmann::json &j, MessageReactionAddObject &m);
-};
-
-struct MessageReactionRemoveObject {
- Snowflake UserID;
- Snowflake ChannelID;
- Snowflake MessageID;
- std::optional<Snowflake> GuildID;
- EmojiData Emoji;
-
- friend void from_json(const nlohmann::json &j, MessageReactionRemoveObject &m);
-};
-
-struct ChannelRecipientAdd {
- UserData User;
- Snowflake ChannelID;
-
- friend void from_json(const nlohmann::json &j, ChannelRecipientAdd &m);
-};
-
-struct ChannelRecipientRemove {
- UserData User;
- Snowflake ChannelID;
-
- friend void from_json(const nlohmann::json &j, ChannelRecipientRemove &m);
-};
-
-struct TypingStartObject {
- Snowflake ChannelID;
- std::optional<Snowflake> GuildID;
- Snowflake UserID;
- uint64_t Timestamp;
- std::optional<GuildMember> Member;
-
- friend void from_json(const nlohmann::json &j, TypingStartObject &m);
-};
-
-// implement rest as needed
-struct ModifyGuildObject {
- std::optional<std::string> Name;
- std::optional<std::string> IconData;
-
- friend void to_json(nlohmann::json &j, const ModifyGuildObject &m);
-};
-
-struct GuildBanRemoveObject {
- Snowflake GuildID;
- UserData User;
-
- friend void from_json(const nlohmann::json &j, GuildBanRemoveObject &m);
-};
-
-struct GuildBanAddObject {
- Snowflake GuildID;
- UserData User;
-
- friend void from_json(const nlohmann::json &j, GuildBanAddObject &m);
-};
-
-struct InviteCreateObject {
- Snowflake ChannelID;
- std::string Code;
- std::string CreatedAt;
- std::optional<Snowflake> GuildID;
- std::optional<UserData> Inviter;
- int MaxAge;
- int MaxUses;
- UserData TargetUser;
- std::optional<ETargetUserType> TargetUserType;
- bool IsTemporary;
- int Uses;
-
- friend void from_json(const nlohmann::json &j, InviteCreateObject &m);
-};
-
-struct InviteDeleteObject {
- Snowflake ChannelID;
- std::optional<Snowflake> GuildID;
- std::string Code;
-
- friend void from_json(const nlohmann::json &j, InviteDeleteObject &m);
-};
-
-struct ConnectionData {
- std::string ID;
- std::string Type;
- std::string Name;
- bool IsVerified;
-
- friend void from_json(const nlohmann::json &j, ConnectionData &m);
-};
-
-struct MutualGuildData {
- Snowflake ID;
- std::optional<std::string> Nick; // null
-
- friend void from_json(const nlohmann::json &j, MutualGuildData &m);
-};
-
-struct UserProfileData {
- std::vector<ConnectionData> ConnectedAccounts;
- std::vector<MutualGuildData> MutualGuilds;
- std::optional<std::string> PremiumGuildSince; // null
- std::optional<std::string> PremiumSince; // null
- UserData User;
-
- friend void from_json(const nlohmann::json &j, UserProfileData &m);
-};
-
-struct UserNoteObject {
- // idk if these can be null or missing but i play it safe
- std::optional<std::string> Note;
- std::optional<Snowflake> NoteUserID;
- std::optional<Snowflake> UserID;
-
- friend void from_json(const nlohmann::json &j, UserNoteObject &m);
-};
-
-struct UserSetNoteObject {
- std::string Note;
-
- friend void to_json(nlohmann::json &j, const UserSetNoteObject &m);
-};
-
-struct UserNoteUpdateMessage {
- std::string Note;
- Snowflake ID;
-
- friend void from_json(const nlohmann::json &j, UserNoteUpdateMessage &m);
-};
-
-struct RelationshipsData {
- std::vector<UserData> Users;
-
- friend void from_json(const nlohmann::json &j, RelationshipsData &m);
-};
-
-struct ModifyGuildMemberObject {
- // std::optional<std::string> Nick;
- // std::optional<bool> IsMuted;
- // std::optional<bool> IsDeaf;
- // std::optional<Snowflake> ChannelID;
-
- std::optional<std::vector<Snowflake>> Roles;
-
- friend void to_json(nlohmann::json &j, const ModifyGuildMemberObject &m);
-};
-
-struct ModifyGuildRoleObject {
- std::optional<std::string> Name;
- std::optional<Permission> Permissions;
- std::optional<uint32_t> Color;
- std::optional<bool> IsHoisted;
- std::optional<bool> Mentionable;
-
- friend void to_json(nlohmann::json &j, const ModifyGuildRoleObject &m);
-};
-
-struct ModifyGuildRolePositionsObject {
- struct PositionParam {
- Snowflake ID;
- std::optional<int> Position; // no idea why this can be optional
-
- friend void to_json(nlohmann::json &j, const PositionParam &m);
- };
- std::vector<PositionParam> Positions;
-
- friend void to_json(nlohmann::json &j, const ModifyGuildRolePositionsObject &m);
-};
-
-struct GuildEmojisUpdateObject {
- Snowflake GuildID;
- // std::vector<EmojiData> Emojis;
- // GuildHashes, undocumented
-
- friend void from_json(const nlohmann::json &j, GuildEmojisUpdateObject &m);
-};
-
-struct ModifyGuildEmojiObject {
- std::optional<std::string> Name;
- // std::optional<std::vector<Snowflake>> Roles;
-
- friend void to_json(nlohmann::json &j, const ModifyGuildEmojiObject &m);
-};
-
-struct GuildJoinRequestCreateData {
- GuildApplicationStatus Status;
- GuildApplicationData Request;
- Snowflake GuildID;
-
- friend void from_json(const nlohmann::json &j, GuildJoinRequestCreateData &m);
-};
-
-using GuildJoinRequestUpdateData = GuildJoinRequestCreateData;
-
-struct GuildJoinRequestDeleteData {
- Snowflake UserID;
- Snowflake GuildID;
-
- friend void from_json(const nlohmann::json &j, GuildJoinRequestDeleteData &m);
-};
-
-struct VerificationFieldObject {
- std::string Type;
- std::string Label;
- bool Required;
- std::vector<std::string> Values;
- std::optional<bool> Response; // present in client to server
-
- friend void from_json(const nlohmann::json &j, VerificationFieldObject &m);
- friend void to_json(nlohmann::json &j, const VerificationFieldObject &m);
-};
-
-struct VerificationGateInfoObject {
- std::optional<std::string> Description;
- std::optional<std::vector<VerificationFieldObject>> VerificationFields;
- std::optional<std::string> Version;
- std::optional<bool> Enabled; // present only in client to server in modify gate
-
- friend void from_json(const nlohmann::json &j, VerificationGateInfoObject &m);
- friend void to_json(nlohmann::json &j, const VerificationGateInfoObject &m);
-};
-
-// not sure what the structure for this really is
-struct RateLimitedResponse {
- int Code;
- bool Global;
- std::optional<std::string> Message;
- float RetryAfter;
-
- friend void from_json(const nlohmann::json &j, RateLimitedResponse &m);
-};
-
-struct RelationshipRemoveData {
- Snowflake ID;
- RelationshipType Type;
-
- friend void from_json(const nlohmann::json &j, RelationshipRemoveData &m);
-};
-
-struct RelationshipAddData {
- Snowflake ID;
- // Nickname; same deal as the other comment somewhere else
- RelationshipType Type;
- UserData User;
- // std::optional<bool> ShouldNotify; // i guess if the client should send a notification. not worth caring about
-
- friend void from_json(const nlohmann::json &j, RelationshipAddData &m);
-};
-
-struct FriendRequestObject {
- std::string Username;
- int Discriminator;
-
- friend void to_json(nlohmann::json &j, const FriendRequestObject &m);
-};
-
-struct PutRelationshipObject {
- std::optional<RelationshipType> Type;
-
- friend void to_json(nlohmann::json &j, const PutRelationshipObject &m);
-};
-
-struct ThreadCreateData {
- ChannelData Channel;
-
- friend void from_json(const nlohmann::json &j, ThreadCreateData &m);
-};
-
-struct ThreadDeleteData {
- Snowflake ID;
- Snowflake GuildID;
- Snowflake ParentID;
- ChannelType Type;
-
- friend void from_json(const nlohmann::json &j, ThreadDeleteData &m);
-};
-
-// pretty different from docs
-struct ThreadListSyncData {
- std::vector<ChannelData> Threads;
- Snowflake GuildID;
- // std::optional<std::vector<???>> MostRecentMessages;
-
- friend void from_json(const nlohmann::json &j, ThreadListSyncData &m);
-};
-
-struct ThreadMembersUpdateData {
- Snowflake ID;
- Snowflake GuildID;
- int MemberCount;
- std::optional<std::vector<ThreadMemberObject>> AddedMembers;
- std::optional<std::vector<Snowflake>> RemovedMemberIDs;
-
- friend void from_json(const nlohmann::json &j, ThreadMembersUpdateData &m);
-};
-
-struct ArchivedThreadsResponseData {
- std::vector<ChannelData> Threads;
- std::vector<ThreadMemberObject> Members;
- bool HasMore;
-
- friend void from_json(const nlohmann::json &j, ArchivedThreadsResponseData &m);
-};
-
-struct ThreadMemberUpdateData {
- ThreadMemberObject Member;
-
- friend void from_json(const nlohmann::json &j, ThreadMemberUpdateData &m);
-};
-
-struct ThreadUpdateData {
- ChannelData Thread;
-
- friend void from_json(const nlohmann::json &j, ThreadUpdateData &m);
-};
-
-struct ThreadMemberListUpdateData {
- struct UserEntry {
- Snowflake UserID;
- // PresenceData Presence;
- GuildMember Member;
-
- friend void from_json(const nlohmann::json &j, UserEntry &m);
- };
-
- Snowflake ThreadID;
- Snowflake GuildID;
- std::vector<UserEntry> Members;
-
- friend void from_json(const nlohmann::json &j, ThreadMemberListUpdateData &m);
-};
-
-struct ModifyChannelObject {
- std::optional<bool> Archived;
- std::optional<bool> Locked;
-
- friend void to_json(nlohmann::json &j, const ModifyChannelObject &m);
-};