Initial commit
This commit is contained in:
commit
8ca93c1bab
7 changed files with 514 additions and 0 deletions
199
breadtube_bot/objects.py
Normal file
199
breadtube_bot/objects.py
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from enum import Enum, IntFlag
|
||||
|
||||
|
||||
class ChannelType(Enum):
|
||||
GUILD_TEXT = 0
|
||||
DM = 1
|
||||
GUILD_VOICE = 2
|
||||
GROUP_DM = 3
|
||||
GUILD_CATEGORY = 4
|
||||
GUILD_ANNOUNCEMENT = 5
|
||||
ANNOUNCEMENT_THREAD = 10
|
||||
PUBLIC_THREAD = 11
|
||||
PRIVATE_THREAD = 12
|
||||
GUILD_STAGE_VOICE = 13
|
||||
GUILD_DIRECTORY = 14
|
||||
GUILD_FORUM = 15
|
||||
GUILD_MEDIA = 16
|
||||
|
||||
|
||||
class ChannelFlags(IntFlag):
|
||||
# this thread is pinned to the top of its parent GUILD_FORUM or GUILD_MEDIA channel
|
||||
PINNED = 1 << 1
|
||||
# whether a tag is required to be specified when creating a thread in a GUILD_FORUM or a GUILD_MEDIA channel.
|
||||
# Tags are specified in the applied_tags field.
|
||||
REQUIRE_TAG = 1 << 4
|
||||
# when set hides the embedded media download options. Available only for media channels
|
||||
HIDE_MEDIA_DOWNLOAD_OPTIONS = 1 << 15
|
||||
|
||||
|
||||
class OverwriteType(Enum):
|
||||
ROLE = 0
|
||||
MEMBER = 1
|
||||
|
||||
|
||||
class Permissions(IntFlag):
|
||||
# Allows creation of instant invites
|
||||
CREATE_INSTANT_INVITE = 1 << 0
|
||||
# Allows kicking members
|
||||
KICK_MEMBERS = 1 << 1
|
||||
# Allows banning members
|
||||
BAN_MEMBERS = 1 << 2
|
||||
# Allows all permissions and bypasses channel permission overwrites
|
||||
ADMINISTRATOR = 1 << 3
|
||||
# Allows management and editing of channels
|
||||
MANAGE_CHANNELS = 1 << 4
|
||||
# Allows management and editing of the guild
|
||||
MANAGE_GUILD = 1 << 5
|
||||
# Allows for adding new reactions to messages.
|
||||
# This permission does not apply to reacting with an existing reaction on a message.
|
||||
ADD_REACTIONS = 1 << 6
|
||||
# Allows for viewing of audit logs
|
||||
VIEW_AUDIT_LOG = 1 << 7
|
||||
# Allows for using priority speaker in a voice channel
|
||||
PRIORITY_SPEAKER = 1 << 8
|
||||
# Allows the user to go live
|
||||
STREAM = 1 << 9
|
||||
# Allows guild members to view a channel,
|
||||
# which includes reading messages in text channels and joining voice channels
|
||||
VIEW_CHANNEL = 1 << 10
|
||||
# Allows for sending messages in a channel and creating threads in a forum
|
||||
# (does not allow sending messages in threads)
|
||||
SEND_MESSAGES = 1 << 11
|
||||
# Allows for sending of /tts messages
|
||||
SEND_TTS_MESSAGES = 1 << 12
|
||||
# Allows for deletion of other users messages
|
||||
MANAGE_MESSAGES = 1 << 13
|
||||
# Links sent by users with this permission will be auto-embedded
|
||||
EMBED_LINKS = 1 << 14
|
||||
# Allows for uploading images and files
|
||||
ATTACH_FILES = 1 << 15
|
||||
# Allows for reading of message history
|
||||
READ_MESSAGE_HISTORY = 1 << 16
|
||||
# Allows for using the @everyone tag to notify all users in a channel,
|
||||
# and the @here tag to notify all online users in a channel
|
||||
MENTION_EVERYONE = 1 << 17
|
||||
# Allows the usage of custom emojis from other servers
|
||||
USE_EXTERNAL_EMOJIS = 1 << 18
|
||||
# Allows for viewing guild insights
|
||||
VIEW_GUILD_INSIGHTS = 1 << 19
|
||||
# Allows for joining of a voice channel
|
||||
CONNECT = 1 << 20
|
||||
# Allows for speaking in a voice channel
|
||||
SPEAK = 1 << 21
|
||||
# Allows for muting members in a voice channel
|
||||
MUTE_MEMBERS = 1 << 22
|
||||
# Allows for deafening of members in a voice channel
|
||||
DEAFEN_MEMBERS = 1 << 23
|
||||
# Allows for moving of members between voice channels
|
||||
MOVE_MEMBERS = 1 << 24
|
||||
# Allows for using voice-activity-detection in a voice channel
|
||||
USE_VAD = 1 << 25
|
||||
# Allows for modification of own nickname
|
||||
CHANGE_NICKNAME = 1 << 26
|
||||
# Allows for modification of other users nicknames
|
||||
MANAGE_NICKNAMES = 1 << 27
|
||||
# Allows management and editing of roles
|
||||
MANAGE_ROLES = 1 << 28
|
||||
# Allows management and editing of webhooks
|
||||
MANAGE_WEBHOOKS = 1 << 29
|
||||
# Allows for editing and deleting emojis, stickers, and soundboard sounds created by all users
|
||||
MANAGE_GUILD_EXPRESSIONS = 1 << 30
|
||||
# Allows members to use application commands, including slash commands and context menu commands.
|
||||
USE_APPLICATION_COMMANDS = 1 << 31
|
||||
# Allows for requesting to speak in stage channels. (This permission is under active development
|
||||
# and may be changed or removed.)
|
||||
REQUEST_TO_SPEAK = 1 << 32
|
||||
# Allows for editing and deleting scheduled events created by all users
|
||||
MANAGE_EVENTS = 1 << 33
|
||||
# Allows for deleting and archiving threads, and viewing all private threads
|
||||
MANAGE_THREADS = 1 << 34
|
||||
# Allows for creating public and announcement threads
|
||||
CREATE_PUBLIC_THREADS = 1 << 35
|
||||
# Allows for creating private threads
|
||||
CREATE_PRIVATE_THREADS = 1 << 36
|
||||
# Allows the usage of custom stickers from other servers
|
||||
USE_EXTERNAL_STICKERS = 1 << 37
|
||||
# Allows for sending messages in threads
|
||||
SEND_MESSAGES_IN_THREADS = 1 << 38
|
||||
# Allows for using Activities (applications with the EMBEDDED flag)
|
||||
USE_EMBEDDED_ACTIVITIES = 1 << 39
|
||||
# Allows for timing out users to prevent them from sending or reacting to messages in chat and threads,
|
||||
# and from speaking in voice and stage channels
|
||||
MODERATE_MEMBERS = 1 << 40
|
||||
# Allows for viewing role subscription insights
|
||||
VIEW_CREATOR_MONETIZATION_ANALYTICS = 1 << 41
|
||||
# Allows for using soundboard in a voice channel
|
||||
USE_SOUNDBOARD = 1 << 42
|
||||
# Allows for creating emojis, stickers, and soundboard sounds, and editing and deleting those created
|
||||
# by the current user. Not yet available to developers, see changelog.
|
||||
CREATE_GUILD_EXPRESSIONS = 1 << 43
|
||||
# Allows for creating scheduled events, and editing and deleting those created by the current user.
|
||||
# Not yet available to developers, see changelog.
|
||||
CREATE_EVENTS = 1 << 44
|
||||
# Allows the usage of custom soundboard sounds from other servers
|
||||
USE_EXTERNAL_SOUNDS = 1 << 45
|
||||
# Allows sending voice messages
|
||||
SEND_VOICE_MESSAGES = 1 << 46
|
||||
# Allows sending polls
|
||||
SEND_POLLS = 1 << 49
|
||||
# Allows user-installed apps to send public responses. When disabled, users will still be allowed to use their apps
|
||||
# but the responses will be ephemeral. This only applies to apps not also installed to the server.
|
||||
USE_EXTERNAL_APPS = 1 << 50
|
||||
# Allows pinning and unpinning messages
|
||||
PIN_MESSAGES = 1 << 51
|
||||
|
||||
|
||||
@dataclass
|
||||
class Overwrite:
|
||||
id: int
|
||||
type: OverwriteType
|
||||
allow: Permissions
|
||||
deny: Permissions
|
||||
|
||||
|
||||
@dataclass
|
||||
class ChannelCategory:
|
||||
id: int
|
||||
guild_id: int
|
||||
position: int
|
||||
permission_overwrites: list[Overwrite]
|
||||
name: str | None
|
||||
parent_id: int | None
|
||||
flags: ChannelFlags
|
||||
|
||||
|
||||
@dataclass
|
||||
class TextChannel:
|
||||
id: int
|
||||
guild_id: int
|
||||
position: int
|
||||
permission_overwrites: list[Overwrite]
|
||||
name: str | None
|
||||
topic: str | None
|
||||
nsfw: bool
|
||||
last_message_id: int | None
|
||||
rate_limit_per_user: int
|
||||
parent_id: int | None
|
||||
last_pin_timestamp: datetime | None
|
||||
flags: ChannelFlags
|
||||
|
||||
|
||||
@dataclass
|
||||
class User: # TODO : complete attributes
|
||||
id: int
|
||||
username: str
|
||||
discriminator: str
|
||||
global_name: str | None
|
||||
|
||||
|
||||
@dataclass
|
||||
class Message: # TODO : complete attributes
|
||||
id: int
|
||||
channel_id: int
|
||||
author: User
|
||||
content: str
|
||||
timestamp: datetime
|
||||
edited_timestamp: datetime | None
|
||||
Loading…
Add table
Add a link
Reference in a new issue