Add guild
This commit is contained in:
parent
b3dc748a64
commit
875050c6b6
|
@ -0,0 +1,153 @@
|
||||||
|
import json, discordobject, channel, member, options, nimcordutils
|
||||||
|
|
||||||
|
type
|
||||||
|
ChannelType* = enum
|
||||||
|
chanTypeGuildText = 0,
|
||||||
|
chanTypeDM = 1,
|
||||||
|
chanTypeGuildVoice = 2,
|
||||||
|
chanTypeGroupDM = 3,
|
||||||
|
chanTypeGuildCategory = 4,
|
||||||
|
chanTypeGuildNews = 5,
|
||||||
|
chanTypeGuildStore = 6
|
||||||
|
|
||||||
|
VerificationLevel* = enum
|
||||||
|
verifLevelNone = 0,
|
||||||
|
verifLevelLow = 1,
|
||||||
|
verifLevelMedium = 2,
|
||||||
|
verifLevelHigh = 3,
|
||||||
|
verifLevelVeryHigh = 4
|
||||||
|
|
||||||
|
MFALevel* = enum
|
||||||
|
mfaLevelNone = 0,
|
||||||
|
mfaLevelElevated = 1
|
||||||
|
|
||||||
|
PremiumTier* = enum
|
||||||
|
premTierNone = 0,
|
||||||
|
prermTierOne = 1,
|
||||||
|
premTierTwo = 2,
|
||||||
|
premTierThree = 3
|
||||||
|
|
||||||
|
MessageNotificationsLevel* = enum
|
||||||
|
msgNotifLevelAll = 0,
|
||||||
|
msgNotifLevelMentions = 1
|
||||||
|
|
||||||
|
ExplicitContentFilterLevel * = enum
|
||||||
|
expFilterLvlDisabled = 0,
|
||||||
|
expFilterLvlMembersWithoutRoles = 1,
|
||||||
|
expFilterLvlAllMembers = 2
|
||||||
|
|
||||||
|
Guild* = ref object of DiscordObject
|
||||||
|
name*: string
|
||||||
|
icon*: string
|
||||||
|
splash*: string
|
||||||
|
discoverySplash*: string
|
||||||
|
owner*: bool
|
||||||
|
ownerID: snowflake
|
||||||
|
#TODO: Convert this to a Permissions type
|
||||||
|
permissions*: int
|
||||||
|
region*: string
|
||||||
|
afkChannelID*: snowflake
|
||||||
|
afkTimeout*: int
|
||||||
|
verificationLevel*: VerificationLevel
|
||||||
|
defaultMessageNotifications*: MessageNotificationsLevel
|
||||||
|
explicitContentFilter*: ExplicitContentFilterLevel
|
||||||
|
#roles*: seq[Role]
|
||||||
|
#emojis*: seq[Emoji]
|
||||||
|
features*: seq[string]
|
||||||
|
mfaLevel*: MFALevel
|
||||||
|
applicationID*: snowflake
|
||||||
|
widgetEnabled*: bool
|
||||||
|
widgetChannelID*: snowflake
|
||||||
|
systemChannelID*: snowflake
|
||||||
|
systemChannelFlags*: int
|
||||||
|
rulesChannelID*: snowflake
|
||||||
|
joinedAt*: string
|
||||||
|
large*: bool
|
||||||
|
unavailable*: bool
|
||||||
|
memberCount*: int
|
||||||
|
#voiceStates*: seq[VoiceState]
|
||||||
|
members*: seq[GuildMember]
|
||||||
|
channels*: seq[Channel]
|
||||||
|
#presences*: seq[Presence]
|
||||||
|
maxPresences*: int
|
||||||
|
maxMembers*: int
|
||||||
|
vanityUrlCode*: string
|
||||||
|
description*: string
|
||||||
|
banner*: string
|
||||||
|
premiumTier*: PremiumTier
|
||||||
|
premiumSubscriptionCount*: int
|
||||||
|
preferredLocale*: string
|
||||||
|
publicUpdatesChannelID*: snowflake
|
||||||
|
maxVideoChannelUsers*: int
|
||||||
|
approximateMemberCount*: int
|
||||||
|
approximatePresenceCount*: int
|
||||||
|
|
||||||
|
proc newGuild*(json: JsonNode): Guild {.inline.} =
|
||||||
|
# Parsing all null or guaranteed fields
|
||||||
|
var g = Guild(
|
||||||
|
id: getIDFromJson(json["id"].getStr()),
|
||||||
|
name: json["name"].getStr(),
|
||||||
|
icon: json["icon"].getStr(),
|
||||||
|
splash: json["splash"].getStr(),
|
||||||
|
discoverySplash: json["discovery_splash"].getStr(),
|
||||||
|
ownerID: getIDFromJson(json["owner_id"].getStr()),
|
||||||
|
region: json["region"].getStr(),
|
||||||
|
afkChannelID: getIDFromJson(json["afk_channel_id"].getStr()),
|
||||||
|
afkTimeout: json["afk_timeout"].getInt(),
|
||||||
|
verificationLevel: VerificationLevel(json["verification_level"].getInt()),
|
||||||
|
defaultMessageNotifications: MessageNotificationsLevel(json["default_message_notifications"].getInt()),
|
||||||
|
explicitContentFilter: ExplicitContentFilterLevel(json["explicit_content_filter"].getInt()),
|
||||||
|
#roles
|
||||||
|
#emojis
|
||||||
|
#features
|
||||||
|
mfaLevel: MFALevel(json["mfa_level"].getInt()),
|
||||||
|
applicationID: getIDFromJson(json["application_id"].getStr()),
|
||||||
|
systemChannelID: getIDFromJson(json["system_channel_id"].getStr()),
|
||||||
|
systemChannelFlags: json["system_channel_flags"].getInt(),
|
||||||
|
rulesChannelID: getIDFromJson(json["rules_channel_id"].getStr()),
|
||||||
|
vanityUrlCode: json["vanity_url_code"].getStr(),
|
||||||
|
description: json["description"].getStr(),
|
||||||
|
banner: json["banner"].getStr(),
|
||||||
|
premiumTier: PremiumTier(json["premium_tier"].getInt()),
|
||||||
|
preferredLocale: json["preferred_locale"].getStr(),
|
||||||
|
publicUpdatesChannelID: getIDFromJson(json["public_updates_channel_id"].getStr())
|
||||||
|
)
|
||||||
|
|
||||||
|
# Parse all non guaranteed fields
|
||||||
|
if (json.contains("owner")):
|
||||||
|
g.owner = json["owner"].getBool()
|
||||||
|
if (json.contains("owner_id")):
|
||||||
|
g.ownerID = getIDFromJson(json["owner_id"].getStr())
|
||||||
|
#TODO: permissions
|
||||||
|
if (json.contains("widget_enabled")):
|
||||||
|
g.widgetEnabled = json["widget_enabled"].getBool()
|
||||||
|
if (json.contains("widget_channel_id")):
|
||||||
|
g.widgetChannelID = getIDFromJson(json["widget_channel_id"].getStr())
|
||||||
|
if (json.contains("large")):
|
||||||
|
g.large = json["large"].getBool()
|
||||||
|
if (json.contains("unavailable")):
|
||||||
|
g.unavailable = json["unavailable"].getBool()
|
||||||
|
if (json.contains("member_count")):
|
||||||
|
g.memberCount = json["member_count"].getInt()
|
||||||
|
#TODO: voice_states
|
||||||
|
if (json.contains("members")):
|
||||||
|
for member in json["members"]:
|
||||||
|
g.members.insert(newGuildMember(member))
|
||||||
|
if (json.contains("channels")):
|
||||||
|
for channel in json["channels"]:
|
||||||
|
g.channels.insert(newChannel(channel))
|
||||||
|
#TODO: presences
|
||||||
|
if (json.contains("max_presences")):
|
||||||
|
g.maxPresences = json["max_presences"].getInt()
|
||||||
|
if (json.contains("max_members")):
|
||||||
|
g.maxMembers = json["max_members"].getInt()
|
||||||
|
if (json.contains("premium_subscription_count")):
|
||||||
|
g.premiumSubscriptionCount = json["premium_subscription_count"].getInt()
|
||||||
|
if (json.contains("max_video_channel_users")):
|
||||||
|
g.maxVideoChannelUsers = json["max_video_channel_users"].getInt()
|
||||||
|
if (json.contains("approximate_member_count")):
|
||||||
|
g.approximateMemberCount = json["approximate_member_count"].getInt()
|
||||||
|
if (json.contains("approximate_presence_count")):
|
||||||
|
g.approximatePresenceCount = json["approximate_presence_count"].getInt()
|
||||||
|
|
||||||
|
return g
|
Reference in New Issue