前提
C# で discode のBOTの制作を始めてみたばかりなのですが、BOT自身以外の発言のSocketMessageの変数のContentなどのデータが入っていない。
実現したいこと
任意の発言のSocketMessageの変数のContentなどの参照できるようにしたい。
発生している問題・エラーメッセージ
BOT自身以外の発言のmessageParamの中身のContentのデータが入っていない。
下記ソースコードの26行目から記述している変数の、SocketMessage messagemの一部のデータが空になっている。
ブレークポイントで止めて、内容を見たときには下記のようにチャンネルは取得でき、コンテンツは空データになっている。
messagem = Channel = チャンネル名 (数字, Text)
messagem = Content = ""
しかし、BOTに@メンションをつけてメッセージを送った際には、BOT以外の発言でもmessageParamの中身のContentのデータが入っていた。
また、BOTに対してDMを送った際には、@メンションなしの発言でもmessageParamの中身のContentのデータが入っていた。
該当のソースコード
C#
1namespace THEnamespace 2{ 3 class Program 4 { 5 const string BotToken = "仮ボットトークン"; 6 7 DiscordSocketClient Client; 8 9 static void Main(string[] args) => new Program().MainAsync().GetAwaiter().GetResult(); 10 11 public async Task MainAsync() 12 { 13 var config = new DiscordSocketConfig 14 { 15 LogLevel = LogSeverity.Info 16 }; 17 18 Client = new DiscordSocketClient(config); 19 20 Client.MessageReceived += MessageReceived; 21 await Client.LoginAsync(TokenType.Bot, BotToken); 22 await Client.StartAsync(); 23 await Task.Delay(-1); 24 } 25 26 private async Task MessageReceived(SocketMessage messagem) 27 { 28 var message = messagem as SocketUserMessage; 29 //デバッグ出力 30 Console.WriteLine("{0} {1}:{2}", message.Channel.Name, message.Author.Username, message); 31 if (message.Content == "hallo") 32 { 33 await message.Channel.SendMessageAsync("メッセージを認識"); 34 } 35 } 36 } 37}
試したこと
- discode developer portalからMESSAGE CONTENT INTENTの項目をオンにした。
- 1つのサーバー内でしか使用していない。
- BOTに管理者権限を渡す、また、管理者以外のすべての権限を渡す。
- BOTに@メンションをつけてメッセージを送った際には、BOT以外の発言でもmessageParamの中身のContentのデータが入っていた。
- BOTに対してDMを送った際には、@メンションなしの発言でもmessageParamの中身のContentのデータが入っていた。
現在の挙動から、DiscodeのMESSAGE CONTENT INTENTのFAQ項目にある、下記の状態と似たような挙動をしていると思われますが、上記3つの対処をしましたが、効果はなく解決の糸口がつかめません。
『ボットまたはアプリがメッセージ コンテンツに対して承認されていない場合、メッセージを受信すると、Gateway および API ペイロードのメッセージ オブジェクトの次のフィールドが空 (データ型に応じて空の文字列または空の配列) になります。
コンテンツ 埋め込む 添付ファイル コンポーネントボットは引き続きこれらのフィールドを送信できます。 ボットは、次の情報から常にこの情報を取得することもできます。
ボットが送信するメッセージ ボットが DM で受け取るメッセージ ボットが言及されているメッセージ』
引用:https://support-dev.discord.com/hc/en-us/articles/4404772028055 (一部抜粋・機械翻訳)
拙い質問文を読んでくださりありがとうございました。この挙動の解決方法についてご存じの方がいましたら、回答をしていただけたら幸いです。
また、回答に際して、挙動や環境などの情報につきましてご不明な点がございましたら、気軽にお問い合わせください。
補足情報(FW/ツールのバージョンなど)
visual studio
.NET Framework 4.7.3
NuGet - ソリューション Discord.Net 3.9.0

回答1件
あなたの回答
tips
プレビュー