--基于RedProtocol的C# SDK,应用于某猫
我们强烈建议您升级至0.1.0,该版本弃用了直接链式调用发送消息在高并发的情况下可能会导致消息元素重叠的Bug,并添加了对应的ChainBuilder作为新的消息发送方式
RedProtocolSharp将RedProtocol基础的消息格式进行了封装,并将收到的消息封为Event,可供开发者快速开发Bot框架
-
接收源消息
-
源消息文本解析
-
源消息图片解析
-
源消息at解析
-
源消息回复解析
-
源消息发送者信息解析
-
json消息解析(Red尚未提供实现)
-
发送文本消息
-
发送图片消息
-
发送at消息
-
发送回复消息
-
发送语音消息 无需安装其他外置库,感谢silk-rs提供的dll,语音仅支持mp3格式,直接填写filePath即可
-
撤回消息
-
获取Bot自身消息
-
获取Bot好友列表(Bug)
-
获取Bot所在某群群员列表(Bug)
-
踢人
-
禁言人
-
全体禁言
- GetMemberList返回空数组(打开UI可能可以解决问题)
- 现在不会,未来也不可能支持发送Json,xml等消息,也不可能支持主动添加群/好友
Nuget搜索RedProtocolSharp安装
或
引入Release下的Dll,并自行安装WebSocketSharp,NewtonSoft.JSON,NAudio相关依赖(不推荐)
var bot = new Bot("localhost:16530","yourToken");
bot.Start();
bot.Logger.BotLog.OnLogger += BotLogOnHandler;
private static void BotLogOnHandler(BotLogger.Levels levels, string content)
{
Console.WriteLine($"{levels} : {content}");
}
bot.Invoker.OnGroupMessageReceived += InvokerOnOnGroupMessageReceived;
private static void InvokerOnOnGroupMessageReceived(MessageEventArgs e)
{
Console.WriteLine(e.chain.PeerUin);
foreach (var item in e.chain)
{
if (item is TextElement textElement)
{
Console.WriteLine(textElement.content);
}
}
}
原链式调用的方法已弃用!改为Builder创建chain发送消息!
await bot.Send.SendMessageChain(new MessageBuilder()
.SetTarget("114514", ChatTypes.GroupMessage)
.AddText("test")
.Build());
//请使用Builder创建chain对象,不要也不能直接new MessageChain
//假设上一步发送返回了reply
await bot.Action.Revoke(new []{reply.msgId}, reply.chatTypes, reply.peerUin);
var selfInfo = bot.Get.SelfInfo();
await bot.Action.Kick("114514", "1919810", false, "test");
//从群114514踢出用户1919810,不永拒,理由为test
其他操作请自行探索/类比
控制台项目RedProtocolSharp.Sample