身内のサーバーで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も学習していないのかな・・・?