2017-07-19 14 views
1

5秒ごとにメッセージをスパムし、別のコマンドを入力した後に停止するコードが必要です。例のように、ユーザーが「〜raid」と入力すると、ボットは5秒ごとに「RAID RAID」をスパムし、ユーザーが「〜停止」すると停止します。もし誰かがそれを助けることができれば素晴らしいだろう。C#Discord Bot Coding:メッセージをスパムするコマンドを作成し、別のコマンドで停止する

これは私が今までに得たものです: class MyBot { DiscordClient discord; 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); 
    } 
} 

}

+0

のですか? –

+0

そう、メッセージを5秒ごとに繰り返すようにする方法 – user8328934

答えて

0

あなたがそれを行うことができますどのように小さな一例です。 この場合、スタートとストップの方法を使用して、ボットを外部から開始および停止することができます。ここで

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; 
     } 
    } 
+0

これはDiscordでも使えますか?そうであれば、コードを使って作業できますか?私はそれを台無しにしたくないxD – user8328934

+0

私はビジュアルスタジオbtw – user8328934

+0

を使用していますコードは単なる例にすぎません。特定のアプリケーションで動作させるには、コードを調整する必要があります。ユーザーからコマンドを受け取り、それに反応するだけです。希望が役立ちます。 – Ben

関連する問題