如何:处理消息
判断消息来源类型
if (e.Source is IGroup) { } // 群消息。
if (e.Source is IUser) { } // 私聊消息(包括临时会话和好友消息)。
if (e.Source is IMember) { } // 群临时会话消息(注意:由于酷Q限制,所在群为 Group(0))。
if (e.Source is IFriend) { } // 好友消息。
使用 ComplexMessage
通过 Parse(Message, Boolean) 扩展方法解析消息。
var message = e.Message.Parse();
获取消息中的所有纯文本拼接成的字符串。
message.GetPlainText();
判断机器人是否被提及(@)。
if (message.Contains(CurrentUser.Mention()))
{
...
}
使用 Mention(IUser) 提及消息的发送者。
e.Source.Send(e.Sender.Mention() + " How are you?");
// 或直接使用 Reply 扩展方法。
e.Reply("How are you?");
解构复合消息。
var (a, b, c) = message;
解构、模式匹配并获取剩余内容。
if (message is (Mention mention, Image image))
{
var rest = message.Skip(2).ToComplexMessage();
...
}
使用正则消息
通过 Decode(Message) 扩展方法解码正则消息。
var args = e.Message.Decode();
获取 Name
键的值。
args["Name"]