【发布时间】:2020-08-31 11:32:39
【问题描述】:
我正在尝试了解如何在没有我发送任何事件或命令的情况下使用 Discord Bot 将消息发送到我的频道?
我想要达到的结果是通过一个计时器机器人你每分钟在聊天中发送一条消息。
如果你能用一些例子给我解释一下,我将非常感谢你
【问题讨论】:
我正在尝试了解如何在没有我发送任何事件或命令的情况下使用 Discord Bot 将消息发送到我的频道?
我想要达到的结果是通过一个计时器机器人你每分钟在聊天中发送一条消息。
如果你能用一些例子给我解释一下,我将非常感谢你
【问题讨论】:
有多种方法可以在不使用命令的情况下将消息发送到通道中。本质上,您是在问如何从不继承自 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 的方法配置为服务。
【讨论】: