我试图了解如何在不发送任何事件或命令的情况下将Discord Bot的消息发送到我的频道中?
我想要实现的结果是,通过计时器bot,您每分钟在聊天中发送一条消息。
如果您能通过一些例子向我解释一下,我将非常感谢您
答案 0 :(得分:0)
有多种不使用命令将消息发送到通道的方法。本质上,您是在问如何从不继承自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
的方法配置为服务。