如何在 C# 中使用 Discord Bot 发送消息?

Posted

技术标签:

【中文标题】如何在 C# 中使用 Discord Bot 发送消息?【英文标题】:How send a message with a Discord Bot in C#? 【发布时间】:2020-08-31 11:32:39 【问题描述】:

我正在尝试了解如何在没有我发送任何事件或命令的情况下使用 Discord Bot 将消息发送到我的频道?

我想要达到的结果是通过一个计时器机器人你每分钟在聊天中发送一条消息。

如果你能用一些例子给我解释一下,我将非常感谢你

【问题讨论】:

【参考方案1】:

有多种方法可以在不使用命令的情况下将消息发送到通道中。本质上,您是在问如何从不继承自 ModuleBase 的类发送消息。

这需要您使用依赖注入将您的DiscordSocketClient 注入您要从中发送消息的类。

你可以在 Discord.Net 提供的official documentation 和example bot 中了解更多关于依赖注入的信息(因为它是一个很大的话题)(假设你正在使用这个库)。

简单的解决方案如下所示。

public class MyClass

    private readonly DiscordSocketClient _client;
    public MyClass(DiscordSocketClient client) => client = client 

    public async Task SendMessageToChannel(ulong channelId, string message)
    
        SocketChannel channel = _client.GetChannel(channelId);
        await (channel as IMessageChannel).SendMessageAsync(message);
    
 

理想情况下,您还应该创建一个名为IMyClass 的接口并让MyClass 实现它。这样,您也可以有效地将MyClass 的方法配置为服务。

【讨论】:

感谢您的解释我看到任何创建机器人的人都使用“控制台应用程序”,但不能使用“Windows 窗体应用程序”?因为我正在尝试创建一个使用 Form 应用程序执行计算等的机器人。并在 Discord 聊天中向我发送这些数据,但我不清楚它是否真的可能以及如何去做。如果您有任何示例,我将非常感谢您。

以上是关于如何在 C# 中使用 Discord Bot 发送消息?的主要内容,如果未能解决你的问题,请参考以下文章

C# Discord Bot 编码:创建一个发送垃圾邮件的命令,然后用另一个命令停止

如何使用 discord.js 从 discord bot 向特定用户发送消息

如何让 discord bot 等待回复 5 分钟然后发送消息?使用不和谐的 js

对创建 C# discord bot 感到困惑

如何使用 discord.py 让 discord bot ping 用户 [关闭]

如何使用由 discord bot 生成的 .json 文件作为 c# 程序的数据库文件? [关闭]