the tables that should refer to members aren't doing so because
they were declared before the members table itself.
this leads to data inconsistency as members leave or get kicked
or get banned from a guild, and the relevant rows on those tables
ARE NOT removed as well.
leftovers are TBD.
- constrict Dispatcher.dispatch() to arity 3
- add helper methods to Dispatcher
- add EventType to Dispatcher
While fixing things, it was discovered that many of the things inside
LazyGuildDispatcher were just interfaces to GuildMemberList, in a very
weird way, just so it could be fitted inside the main Dispatcher. it was
decided to remove those unecessary interfaces, clients shall use the
manager directly.
- manage.cmd.users: don't send updates when deleting users
the rationale for this is that while we have an app.dispatcher, it is
fully empty since we created a mock just for manage.py operations. to
have proper side-effects occouring on the actual main app, we'd need to
implement some kind of IPC, and i'm not up for that task, yet.
- 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
there is an issue (not very urgent) where a traceback was shown at any
`manage.py` usage. this was not catched before because of recent
modifications that removed manager startup when calling `migrate`.
it can do messages. but many things are still missing.
- channel.messages: export msg_guild_text_mentions
- storage: revamp Storage._inject_author
- schema.sql: remove messages.webhook_id, add message_webhook_info
table
- add 16_messages_webhooks.sql migration