--基于RedProtocol的C# SDK,应用于某猫
RedProtocolSharp将RedProtocol基础的消息格式进行了封装,并将收到的消息封为Event,可供开发者快速开发Bot框架
-
接收源消息
-
源消息文本解析
-
源消息图片解析
-
源消息at解析
-
源消息回复解析
-
源消息发送者信息解析
-
json消息解析(Red尚未提供实现)
-
发送文本消息
-
发送图片消息
-
发送at消息
-
发送回复消息
-
发送合并转发消息
-
发送语音消息 无需安装其他外置库,感谢silk-rs提供的dll,语音仅支持mp3格式,直接填写fileName即可
-
撤回消息
-
获取Bot自身消息
-
获取Bot好友列表(Bug)
-
获取Bot所在某群群员列表(Bug)
-
踢人
-
禁言人
-
全体禁言
- GetMemberList返回空数组(打开UI可能可以解决问题)
Nuget搜索RedProtocolSharp安装
或
引入Release下的Dll,并自行安装WebSocketSharp,NewtonSoft.JSON相关依赖(不推荐)
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.GroupUin);
foreach (var item in e.chain)
{
if (item is TextElement textElement)
{
Console.WriteLine(textElement.content);
}
}
}
var reply = await bot.Send
.SetTarget("1919810", ChatTypes.GroupMessage)
.AddText("testMessage")
.AddAt("114514")
.AddPic("test.png")
.SendMessage();
//向群1919810发送内容为testMessage,艾特用户114514,附带图片test.png的消息
//Extra
var chain = new MessageChain()
{
PeerUin = "1919810",
chatTypes = ChatTypes.GroupMessage
};
chain.Add(new TextElement()
{
content = "text"
});
chain.Add(new AtElement()
{
target = "114514"
});
chain.Add(new ImageElement()
{
sourcePath = "test.png"
});
await bot.Send.SendMessage(chain);
//该方法等效于上面的链式调用方法
//假设上一步发送返回了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
其他操作请自行探索/类比
LlisBot(尚在开发中,暂未提供)