instead of pulling a hack and injecting from_int() in `__init_subclass__`, we
just make an actual function, and cache the wanted attributes in the subclass
at its creation
this fixes statis analyzers claiming from_int() doesn't exist on
subclasses, for good reason, as they'd be turing-complete to do so, lol
- auth: fix some mypy issues about reusing same variable
- embed.messages: propagate payload.flags when updating msg embeds
- enums: fix typo
- channels: fix flag helper functions
- storage: only fill res.member when user_id is given
- storage: sentinel value is 0 instead of none for flags removal
this adds *theoretical* interfaces to a VoiceManager. The actual
VoiceManager does not work and probably any VSU being sent over will
crash the websocket with an AttributionError.
- enums: add VOICE_CHANNELS
- run: add App.voice attribute
friendships and blocks are possible, however presence code isn't ready
to handle presences of people who are friends.
SQL for instances, this is going to fix bad timestamps on the messages:
```sql
ALTER TABLE ONLY members ALTER COLUMN joined_at SET DEFAULT (now() at time zone 'utc');
ALTER TABLE ONLY messages ALTER COLUMN created_at SET DEFAULT (now() at time zone 'utc');
ALTER TABLE ONLY invites ALTER COLUMN created_at SET DEFAULT (now() at time zone 'utc');
```
After that, rerun the schema.sql file to have the new relationships
table.
- blueprints: add relationships blueprint
- enums: add RelationshipType
- storage: add get_relationships
- storage: fix bug on lazy guild changes and messages
- schemas: return validator.document instead of reqjson
- gateway.websocket: use Storage.get_relationships
Lots of changes to get it working.
One day changes will be able to be small enough to be split across
commits.
- enums: use enum.Enum, make EasyEnum subclass
- enums: add ActivityType, ActivityFlags, StatusType
- gateway.state: use 128 random bits instead of 256
- gateway.state: add MAX_STORE_SIZE in PayloadStore and check it when
adding a new payload
- gateway.websocket: add GatewayWebsocket.update_status
- presence: add PresenceManager.dispatch_guild_pres and
PresenceManager.dispatch_pres
- schema: add snowflake, activity_type, status_external types
- schema: add GW_ACTIVITY, GW_STATUS_UPDATE
- storage: fix _channels_extra and fixes for ChannelType as enum instead of
class