【问题标题】:Discord bot C# reading specific messgaes on the requested channelDiscord bot C# 读取请求频道上的特定消息
【发布时间】:2020-05-17 12:37:04
【问题描述】:

所以我开始用 c# 构建一个不和谐的机器人;一个谋杀游戏,其中人 A 键入“?kill”,然后它会“杀死”发送的 cmd 消息正上方的人。这是我遇到问题的地方;我似乎在作者的消息上方找不到可以扫描/读取消息的用户 ID 的代码。与流行的清除/擦除命令不同,您可以删除 x 条消息,我需要机器人专门“选择”特定消息。谁有线索?

这是一个示例情况:

B 人:bla bla bla

A 人(凶手):?kill

(Bot 扫描/查找 cmd 上方消息的作者。)

机器人:A 杀死了 B!

【问题讨论】:

  • 你在什么平台或框架中构建这个机器人?
  • 我正在 Windows Visual Studio 2019 上使用控制台应用程序构建它。 Net 框架,带有 d#(discord bot stuff)
  • D# 是指DiscordSharp 吗?
  • 是的,还有,交互性和命令下一个

标签: c# bots discord


【解决方案1】:

首先,既然您提到您正在使用 DiscordSharp,我个人建议您使用 Discord.Net 作为 D# 库已经有几年没有更新了Discord.Net 正在持续开发中,并且有十几个 API 可以连接到 Discord Bot API。

虽然您可以从LUISDialogFlow 等其他在线服务和Oscova 等框架连接到 API,但我将通过Discord.Net 写下直接交互的代码。

在 Visual Studio 中:

  • 选择Tools
  • 选择NuGet Package Manager并选择Package Manager Console

输入以下命令(在删除当前 D# 包之后)

Install-Package Discord.Net

您可以通过在Client.MessageReceived 事件中接收到的SocketMessage 对象获取用户 ID 并向正确的频道/用户发送消息。

Client = new DiscordSocketClient();
Client.MessageReceived += ClientOnMessageReceived;

await Client.LoginAsync(TokenType.Bot, "YOUR_BOT_TOKEN");
await Client.StartAsync();

创建一些事件处理程序。在下面的代码中,您可以看到如何获取一些用户和活动信息。

private async Task ClientOnMessageReceived(SocketMessage socketMessage)
{
    await Task.Run(() =>
    {
        //Activity is not from a Bot.
        if (!socketMessage.Author.IsBot)
        {

            var authorId = socketMessage.Author.Id;
            var channelId  = socketMessage.Channel.Id.ToString();
            var messageId = socketMessage.Id.ToString();
            var message = socketMessage.Content;

            var channel = Client.GetChannel(Convert.ToUInt64(channelId));
            var socketChannel = (ISocketMessageChannel)channel;

            //Do Something and send a response here.
            socketChannel.SendMessageAsync("YOUR RESPONSE");
        }
    });
}

【讨论】:

  • 你好。感谢您花费一些时间来帮助我!虽然我认为我有 1 件事要澄清:这样做不会扫描发出命令的作者吗?还是我应该先删除命令文本,以便“最新”消息成为其他人的?
  • 向您发送消息的人就是应该接收消息的人。频道 ID 可以为您提供帮助。
猜你喜欢
  • 2020-10-01
  • 2023-03-27
  • 2021-11-11
  • 2021-07-06
  • 2021-08-18
  • 2021-01-10
  • 2020-08-25
  • 2022-11-17
  • 2020-07-06
相关资源
最近更新 更多