如何在间隔后随机更改不和谐机器人的游戏活动

Posted

技术标签:

【中文标题】如何在间隔后随机更改不和谐机器人的游戏活动【英文标题】:How to change discord bots game activity randomly after a interval 【发布时间】:2020-09-02 01:03:53 【问题描述】:

我正在尝试让我的机器人每隔一段时间更改其游戏状态。

这是我尝试过的: 使它成为一个命令这工作但不能使用它,因为该命令总是在运行,因为循环使其他命令无法运行。

[Command("randomplaying")]
        [RequireUserPermission(GuildPermission.MentionEveryone)]
        private async Task randomPlaying()
        
            const int delay = 3000;

            Random rand = new Random();

            string[] serverActivity = File.ReadAllLines(Server.GameActivity.servergameactivitypath);

            for (; ; )
            
                int randomIndex = rand.Next(serverActivity.Length);
                string gameActityText = serverActivity[randomIndex];
                await Task.Delay(delay);
                await Context.Client.SetGameAsync(gameActityText, "", ActivityType.Playing);
            
        

尝试在 Program.cs 中执行此操作

private async Task randomPlaying()
        
            const int delay = 3000;

            Random rand = new Random();

            string[] serverActivity = File.ReadAllLines(Commands.Server.GameActivity.servergameactivitypath);

            for (; ; )
            
                int randomIndex = rand.Next(serverActivity.Length);
                string gameActityText = serverActivity[randomIndex];
                await Task.Delay(delay);
                await Context.Client.SetGameAsync(gameActityText, "", ActivityType.Playing);
            
        

并用

调用它
await randomPlaying();

这个方法什么都不做,甚至不显示它的工作原理。

servergameactivitypath 代码是

public static string servergameactivitypath = AppDomain.CurrentDomain.BaseDirectory + "/config/gameactivity.txt";


        public static void createGameActivityTXT()
        
            File.WriteAllText(servergameactivitypath, "Hello There\nTest1\nTest2\nTest3");
        

    

【问题讨论】:

上下文只存在于命令模块中。只需使用您在 program.cs 中登录的客户端实例 @Anu6is 好的谢谢你我已经修好了。 【参考方案1】:

用途:


    private async Task randomPlaying()
        
            const int delay = 3000;

            Random rand = new Random();

            string[] serverActivity = File.ReadAllLines(Commands.Server.GameActivity.servergameactivitypath);

            for (; ; )
            
                int randomIndex = rand.Next(serverActivity.Length);
                string gameActityText = serverActivity[randomIndex];
                await Task.Delay(delay);
                await _client.SetGameAsync(gameActityText, "", ActivityType.Playing);
            
         

使用上面的 Task.Delay 调用 MainAsync()

await randomPlaying()

【讨论】:

以上是关于如何在间隔后随机更改不和谐机器人的游戏活动的主要内容,如果未能解决你的问题,请参考以下文章

如何将随机设置的单词值分配给变量 Javascript? (不和谐 JS v12H

如何设置一个不和谐的不和谐机器人来玩游戏?

如何在 Javascript 中为不和谐机器人制作随机生成器?

如何使不和谐机器人随机跳过响应

如何使不和谐的 js 机器人在某个时间在不和谐的确切文本通道中发送随机消息(我制作一个列表并发送它)

前缀更改后重新加载不和谐机器人 (Discord.py)