C# Discord Bot 编码:创建一个发送垃圾邮件的命令,然后用另一个命令停止
Posted
技术标签:
【中文标题】C# Discord Bot 编码:创建一个发送垃圾邮件的命令,然后用另一个命令停止【英文标题】:C# Discord Bot Coding: Creating a command that spams messages then stops with another command 【发布时间】:2017-12-24 03:20:26 【问题描述】:我只需要一行代码,每五秒钟发送一次垃圾邮件,然后在输入另一个命令后停止。例如,如果用户输入“~raid”,则机器人将每五秒发送一次“RAID RAID”垃圾邮件,并在用户输入“~stop”时停止。如果有人可以提供帮助,那就太好了。
这是我目前得到的: MyBot 类 DiscordClient 不和谐; CommandService 命令;
public MyBot()
discord = new DiscordClient(x =>
x.LogLevel = LogSeverity.Info;
x.LogHandler = Log;
);
discord.UsingCommands(x =>
x.PrefixChar = '~';
x.AllowMentionPrefix = true;
);
commands = discord.GetService<CommandService>();
commands.CreateCommand("checked")
.Do(async (e) =>
commands.CreateCommand("weewoo")
.Do(async (e) =>
await e.Channel.SendMessage("**WEE WOO**");
);
discord.ExecuteAndWait(async () =>
await discord.Connect("discordkeyhere", TokenType.Bot);
);
public void Log(object sender, LogMessageEventArgs e)
Console.WriteLine(e.Message);
【问题讨论】:
问题是执行停止命令? 是的,以及如何使消息每 5 秒重复一次 【参考方案1】:这是一个小例子,你可以如何做到这一点。 在这种情况下,您可以使用 Start 和 Stop 方法从外部启动和停止您的机器人。
class MyBot
public MyBot()
CancellationTokenSource cts;
public void Start()
cts = new CancellationTokenSource();
Task t = Task.Run(() =>
while (!cts.IsCancellationRequested)
Console.WriteLine("RAID RAID");
Task.Delay(5000).Wait();
, cts.Token);
public void Stop()
cts?.Cancel();
这是测试 MyBot 类的代码
static void Main(string[] args)
try
var b = new MyBot();
while (true)
var input = Console.ReadLine();
if (input.Equals("~raid", StringComparison.OrdinalIgnoreCase))
b.Start();
else if (input.Equals("~stop", StringComparison.OrdinalIgnoreCase))
b.Stop();
else if (input.Equals("exit", StringComparison.OrdinalIgnoreCase))
break;
Task.Delay(1000);
catch (Exception)
throw;
【讨论】:
这适用于 Discord 吗?如果是这样,你能用代码来处理它吗?我不想搞砸了xD 我正在使用 Visual Studio 顺便说一句 代码只是一个例子。您必须调整代码以使其在您的特定应用程序中工作。您只需要从用户那里获取命令并对它们做出反应。希望对您有所帮助。 @user8328934 幸运的是,discord API(您必须使用)有文档:discordapp.com/developers/docs/reference以上是关于C# Discord Bot 编码:创建一个发送垃圾邮件的命令,然后用另一个命令停止的主要内容,如果未能解决你的问题,请参考以下文章