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 编码:创建一个发送垃圾邮件的命令,然后用另一个命令停止的主要内容,如果未能解决你的问题,请参考以下文章

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

Discord Bot 自动发送消息

对创建 C# discord bot 感到困惑

C# Discord Bot - 上传本地图像

discord.js 发送自定义消息而不是镜像消息

Discord Bot 无需命令即可发送消息