Users and Members
User models cover the shapes that appear in the core runtime path: the bot itself, READY user data, reaction user lists, message authors, guild member events, and schedule creators.
User and BotInfo
User is the general user structure. It includes id, username, avatar, bot flag, and union fields. Ready::user uses this type.
BotInfo is the /users/@me response. In addition to basic user fields, it keeps the platform's share_url and welcome_msg. session.bot_info() is populated from this endpoint during startup when a handler is dispatched.
Member Shapes
There are two member shapes:
botrs::models::guild::Member, alsomodels::guild::Member, is used by guild member gateway events. It hasguild_id,user,nick,roles,joined_at, andop_user_id.models::user::Memberflattens aUserand adds nick, roles, joined_at, deaf, and mute. It mainly appears in response fields such as schedule creator.
Do not treat them as interchangeable. The guild_member_add, guild_member_update, and guild_member_remove callbacks receive the first shape.
Message Authors
Author fields differ by message scene:
- Guild channel messages use
MessageUser, close to a normal guild user shape. - Group messages use
GroupMessageUser, centered onmember_openidandunion_openid. - C2C messages use
C2CMessageUser, centered onuser_openid. - Guild channel member info uses
MessageMember, which only contains nick, roles, and joined_at.
Direct-message events use Message; direct-message sessions use DirectMessage.
Practical Guidance
For normal message events, message.author is a required field. Member details and some platform-specific user fields may still be absent or defaulted depending on the event.
let is_bot = message.author.bot;For group and C2C replies, use the openid fields from the event model.