Skip to content

Latest commit

 

History

History
97 lines (71 loc) · 3.18 KB

receiving-message.md

File metadata and controls

97 lines (71 loc) · 3.18 KB

接收消息

接收群消息

bot.MessageReceived
    .OfType<GroupMessageReceiver>()
    .Subscribe(x =>
    {
        Console.WriteLine($"收到了来自群{x.GroupId}{x.Sender.Id}发送的消息:{x.MessageChain.GetPlainMessage()}");
    });

接收私聊消息

bot.MessageReceived
    .OfType<FriendMessageReceiver>()
    .Subscribe(x =>
    {
        Console.WriteLine($"收到了来自好友{x.FriendId}发送的消息:{x.MessageChain.GetPlainMessage()}");
    });

接收其它消息

除了上面演示的几种消息类型,还可以接收StrangerMessageReceiver(陌生人消息),TempMessageReceiver(临时消息),OtherClientMessageReceiver(其它客户端消息)几种类型的消息。

只需要把上文中的OfType<>尖括号里替换为想要的消息接收器即可。

这些xxReceiver都是MessageReceiverBase的子类,它们都有:

  • MessageChain属性,用来表示收到的消息链。

  • Sender属性,用来表示消息的发送者,每个子类中的Sender都有其对应的类型。

  • FriendMessageReceiver,用来接收好友消息,SenderFriend

  • GroupMessageReceiver,用来接收群消息,SenderMember

  • TempMessageReceiver,用来接收临时消息,SenderMember

  • StrangerMessageReceiver,用来接收陌生人消息,SenderFriend

  • OtherClientMessageReceiver,用来接收其它客户端消息,SenderOtherClient

完整代码

using System.Reactive.Linq;
using Mirai.Net.Data.Messages.Receivers;
using Mirai.Net.Sessions;

namespace Mirai.Net.Examples
{
    public class Program
    {
        public async Task Main()
        {
            var bot = new MiraiBot
            {
                Address = "localhost:8080",
                QQ = "1590454991",
                VerifyKey = "1145141919810"
            };

            await bot.LaunchAsync();

            bot.MessageReceived
                .OfType<GroupMessageReceiver>()
                .Subscribe(x =>
                {
                    Console.WriteLine($"收到了来自群{x.GroupId}{x.Sender.Id}发送的消息:{x.MessageChain.GetPlainMessage()}");
                });

            bot.MessageReceived
                .OfType<FriendMessageReceiver>()
                .Subscribe(x =>
                {
                    Console.WriteLine($"收到了来自好友{x.FriendId}发送的消息:{x.MessageChain.GetPlainMessage()}");
                });

            bot.MessageReceived
                .OfType<StrangerMessageReceiver>()
                .Subscribe(x =>
                {
                    Console.WriteLine($"收到了来自陌生人{x.StrangerId}发送的消息:{x.MessageChain.GetPlainMessage()}");
                });

            Console.ReadLine();
        }
    }
}