0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DiscordBotでメッセージに反応して返信する

Posted at

身内のサーバーでBotを導入したかったので、自作しようと思い色々やってみたが初歩で詰まったので備忘録

ChatGPTに頼んだコードでは動かなかった。

下記はChatGpt3.5に書いてもらったコードだが、これだとmessage.Contentが空文字になってしまった。
何度かやりとりしたが、全滅だったため自分で解決策を探した。

using System;
using System.Threading.Tasks;
using Discord;
using Discord.WebSocket;

class Program
{
    private DiscordSocketClient _client;

    static void Main(string[] args)
        => new Program().MainAsync().GetAwaiter().GetResult();

    public async Task MainAsync()
    {
        _client = new DiscordSocketClient();

        // メッセージ受信時のイベントを設定
        _client.MessageReceived += MessageReceived;

        string token = "ここにあなたのDiscord botのトークンを入力";
        await _client.LoginAsync(TokenType.Bot, token);
        await _client.StartAsync();

        // プログラムが終了しないように待機させる
        await Task.Delay(-1);
    }

    private async Task MessageReceived(SocketMessage message)
    {
        // メッセージがbotのものであれば無視する
        if (message.Author.IsBot) return;

        // メッセージの内容を確認し、「おはよう」なら返信する
        if (message.Content.ToLower() == "おはよう")
        {
            await message.Channel.SendMessageAsync("おはようございます!");
        }
    }
}

Client生成時にconfigを引数にしないとダメだった

日本語文献がでてこなかったので下記を参考にした。
https://stackoverflow.com/questions/73935914/cant-get-any-discord-messages-from-users/73937627#73937627

        var config = new DiscordSocketConfig
        {
            GatewayIntents = GatewayIntents.AllUnprivileged | GatewayIntents.MessageContent
        };
        _client = new DiscordSocketClient(config);

そもそも.NETでbot作ってる人が少ないので情報が少ないような気がする
AIも学習していないのかな・・・?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?