Skip to content

QQBotClient ​

QQBotClient 是机器人的主入口类,整合了 HTTP API、WebSocket 连接和事件系统。

命名空间: Luolan.QQBot

属性 ​

属性类型说明
OptionsQQBotClientOptions配置选项
ApiQQBotHttpClientHTTP API 客户端
WebSocketQQBotWebSocketClientWebSocket 客户端
EventsEventDispatcher事件分发器
TokenManagerTokenManagerToken 管理器
IsConnectedbool是否已就绪(WebSocket 已连接 / Webhook 已启动)
CurrentUserUser?当前机器人用户信息

生命周期方法 ​

csharp
// 启动机器人(连接 WebSocket)
Task StartAsync(CancellationToken ct = default)

// 停止机器人
Task StopAsync()

// 释放资源
void Dispose()

快捷事件(19个) ​

所有快捷事件是 EventDispatcher 中对应事件的代理。

消息事件 ​

csharp
event Func<ReadyEvent, Task>? OnReady
event Func<MessageCreateEvent, Task>? OnMessageCreate
event Func<AtMessageCreateEvent, Task>? OnAtMessageCreate
event Func<DirectMessageCreateEvent, Task>? OnDirectMessageCreate
event Func<GroupAtMessageCreateEvent, Task>? OnGroupAtMessageCreate
event Func<GroupMessageCreateEvent, Task>? OnGroupMessageCreate
event Func<C2CMessageCreateEvent, Task>? OnC2CMessageCreate
event Func<InteractionCreateEvent, Task>? OnInteractionCreate

频道和成员事件 ​

csharp
event Func<GuildCreateEvent, Task>? OnGuildCreate
event Func<GuildDeleteEvent, Task>? OnGuildDelete
event Func<GuildMemberAddEvent, Task>? OnGuildMemberAdd
event Func<GuildMemberRemoveEvent, Task>? OnGuildMemberRemove

群和好友事件 ​

csharp
event Func<GroupAddRobotEvent, Task>? OnGroupAddRobot
event Func<GroupDelRobotEvent, Task>? OnGroupDelRobot
event Func<GroupMemberAddEvent, Task>? OnGroupMemberAdd
event Func<GroupMemberRemoveEvent, Task>? OnGroupMemberRemove
event Func<GroupJoinRequestEvent, Task>? OnGroupJoinRequest
event Func<SubscribeMessageStatusEvent, Task>? OnSubscribeMessageStatus
event Func<FriendAddEvent, Task>? OnFriendAdd
event Func<FriendDelEvent, Task>? OnFriendDel

快捷消息方法 ​

csharp
// 回复消息(自动检测来源:频道/群/C2C)
Task<Message> ReplyAsync(Message source, string content)
Task<SendGroupMessageResponse> ReplyGroupAsync(Message source, string content, int msgSeq = 0)
Task<SendGroupMessageResponse> ReplyC2CAsync(Message source, string content, int msgSeq = 0)

// 主动发送
Task<Message> SendChannelMessageAsync(string channelId, string content, string? msgId = null)
Task<Message> SendChannelMessageAsync(string channelId, SendMessageRequest request)
Task<Message> SendDirectMessageAsync(string userId, string sourceGuildId, string content, string? msgId = null)
Task<SendGroupMessageResponse> SendGroupMessageAsync(string groupOpenId, string content, string? msgId = null, int msgSeq = 0)
Task<SendGroupMessageResponse> SendGroupMessageAsync(string groupOpenId, SendGroupMessageRequest request)
Task<SendGroupMessageResponse> SendC2CMessageAsync(string openId, string content, string? msgId = null, int msgSeq = 0)
Task<SendGroupMessageResponse> SendC2CMessageAsync(string openId, SendGroupMessageRequest request)

// Markdown
Task<SendGroupMessageResponse> SendGroupMarkdownAsync(string groupOpenId, MessageMarkdown markdown, MessageKeyboard? keyboard = null, string? msgId = null, int msgSeq = 0)
Task<SendGroupMessageResponse> SendC2CMarkdownAsync(string openId, MessageMarkdown markdown, MessageKeyboard? keyboard = null, string? msgId = null, int msgSeq = 0)

// 富媒体(自动上传 + 发送)
Task<SendGroupMessageResponse?> SendGroupMediaAsync(string groupOpenId, string url, int fileType = 1, string? msgId = null, int msgSeq = 1)
Task<SendGroupMessageResponse?> SendC2CMediaAsync(string openId, string url, int fileType = 1, string? msgId = null, int msgSeq = 1)

// 流式消息
Task<StreamMessageResponse> SendC2CStreamMessageAsync(string openId, SendC2CStreamMessageRequest request)

// 撤回
Task RevokeGroupMessageAsync(string groupOpenId, string messageId)
Task RevokeC2CMessageAsync(string openId, string messageId)

快捷频道方法 ​

csharp
Task<List<Guild>> GetGuildsAsync()
Task<Guild> GetGuildAsync(string guildId)
Task<List<Channel>> GetChannelsAsync(string guildId)
Task<List<Member>> GetMembersAsync(string guildId, string? after = null, int limit = 100)

快捷群管理方法 ​

csharp
Task<GroupInfo> GetGroupInfoAsync(string groupOpenId)
Task<GroupBotState> GetGroupBotStateAsync(string groupOpenId)
Task<GroupMemberListResponse> GetGroupMembersAsync(string groupOpenId, string? cursor = null)
Task<GroupMember> GetGroupMemberAsync(string groupOpenId, string memberOpenId)
Task ApproveGroupJoinRequestAsync(string groupOpenId, string memberOpenId, ApproveJoinRequestRequest request)
Task SetGroupMemberMuteAsync(string groupOpenId, SetGroupMemberMuteRequest request)

使用示例 ​

csharp
var bot = new QQBotClientBuilder()
    .WithAppId("...")
    .WithClientSecret("...")
    .Build();

// 注册事件
bot.OnReady += async e =>
{
    Console.WriteLine($"上线: {e.User?.Username}");
};

bot.OnAtMessageCreate += async e =>
{
    // 回复消息
    await bot.ReplyAsync(e.Message, "收到!");

    // 主动发送
    await bot.SendChannelMessageAsync(e.Message.ChannelId!, "主动消息");
};

// 获取频道信息
var guilds = await bot.GetGuildsAsync();
var members = await bot.GetMembersAsync(guilds[0].Id, limit: 50);

// 使用底层 API
var roles = await bot.Api.GetGuildRolesAsync(guilds[0].Id);

// 启动
await bot.StartAsync();

基于 MIT 协议发布