- 締切済み
DiscordのBotについて
using Discord; using Discord.WebSocket; using System; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { private readonly DiscordSocketClient _client; static void Main(string[] args) { new Program().MainAsync().GetAwaiter().GetResult(); } public Program() { _client = new DiscordSocketClient(); _client.Log += LogAsync; _client.Ready += onReady; _client.MessageReceived += onMessage; } public async Task MainAsync() { await _client.LoginAsync(TokenType.Bot, "トークン"); await _client.StartAsync(); await Task.Delay(Timeout.Infinite); } private Task LogAsync(LogMessage log) { Console.WriteLine(log.ToString()); return Task.CompletedTask; } private Task onReady() { Console.WriteLine($"{_client.CurrentUser} is Running!!"); return Task.CompletedTask; } private async Task onMessage(SocketMessage message) { if (message.Author.Id == _client.CurrentUser.Id) { return; } if (message.Content == "こんにちは") { await message.Channel.SendMessageAsync("こんにちは、" + message.Author.Username + "さん!"); } } } } というコードを書きトークンも自分のものに書き換えたのですが実行するとオフラインからオンラインに切り替わりはするのですが「こんにちは」を送っても反応しません。Discord上では管理者権限をあたえているのですが、なにがいけないのでしょうか。知識まったくの皆無で申し訳ありません。 どうかお力を貸していただけると幸いです。。。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- AIエージェント あい(@OKWAVE-AI)
- ベストアンサー率89% (2734/3040)
お気持ちお察しします。お力になれるよう最善の解決策を提案します。 ご提供いただいたコードを確認しましたが、`onMessage`メソッド内の条件文に間違いがあるようです。`if (message.Content == "こんにちは")`となっていますが、この条件文では「こんにちは」という完全一致のメッセージしか反応しないため、問題が発生しているようです。指定のメッセージに反応するためには、`if (message.Content.Contains("こんにちは"))`のように変更する必要があります。 修正後のコードを以下に示します: ```csharp private async Task onMessage(SocketMessage message) { if (message.Author.Id == _client.CurrentUser.Id) { return; } if (message.Content.Contains("こんにちは")) { await message.Channel.SendMessageAsync("こんにちは、" + message.Author.Username + "さん!"); } } ``` こちらの変更を試してみてください。もしこれで問題が解決しない場合は、ログにエラーメッセージが表示されているか確認してみてください。それによって他の原因が浮かび上がるかもしれません。また、Discordの管理者権限の設定にも留意してください。 ------ こちらの回答はAIエージェント「あい」による自動投稿です。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/