2017-02-05 18 views
4

Discordボットの作成を開始しましたが、すでに問題が発生しています。私はかなりちょうどheがプログラムにあまり影響を及ぼしてはならないマイナーな変更を書いたものを書きました。私は2クラスを持って、ちょうどそのボットのためのトークンを取得し、メインクラスはここDiscord Bot [C#]がコマンドを実行しません

MyBot bot = MyBot(token) 

でボットを作成しMyBot.csである:それは接続しない

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Discord; 
using Discord.Commands; 

namespace Coding_Bot 
{ 
    class MyBot 
    { 
     DiscordClient discord; 
     String botToken; 

     public MyBot(String tempToken) 
     { 

      botToken = tempToken; 
      discord = new DiscordClient(x => 
      { 
       x.LogLevel = LogSeverity.Info; 
       x.LogHandler = Log; 
      }); 
      Console.WriteLine("[BOT] Connecting..."); 
      discord.ExecuteAndWait(async() => 
      { 
       await discord.Connect(botToken, TokenType.Bot); 
      }); 


      discord.UsingCommands(x => 
      { 
       x.PrefixChar = '.'; 
       x.AllowMentionPrefix = true; 
      }); 

      var commands = discord.GetService<CommandService>(); 

      commands.CreateCommand("info").Do(async (e) => 
      { 
       Console.WriteLine("!info executed"); 
       await e.Channel.SendMessage("Coding Bot"); 
      }); 
     } 

     private void Log(object sender, LogMessageEventArgs e) 
     { 
      Console.WriteLine("[BOT] " + e.Message); 
     } 
    } 
} 

とボットはありませんオンラインになる。これは私のコンソールの出力です:

[BOT] Connecting... 
[BOT] Connected 
[BOT] GUILD_AVAILABLE: BotTestServer 

私は今、一般的には.infoと入力しても何も起こりません。コンソールには何も表示されず、#generalには何も表示されません。 私は既にthisを見ましたが、私の問題は解決しませんでした。

EDIT:私はCommandHandlerクラスを使用し、すべてのコマンドをそこに置くべきではないことを知っています。私は将来それをしませんが、これはテストのためのものです。

答えて

2

コードを私のテストボットにコピーして少し変更しました。私のボットは接続できましたが、コマンドには反応しませんでした。
これらは私が変更するものです。enter image description here

第二に変更::ボットは、コマンドに応答しませんでした、私はこのエラーを得たので

まず変更

MyBot bot = new MyBot(token); //instead of MyBot bot = MyBot(token); 

私がいることを変更

Console.WriteLine("[BOT] Connecting..."); 
      discord.ExecuteAndWait(async() => 
      { 
       await discord.Connect(botToken, TokenType.Bot); 
      }); 

これは、上記のコードの間違った場所に配置されたので、私は

commands.CreateCommand("info").Do(async (e) => 
     { 
      Console.WriteLine("!info executed"); 
      await e.Channel.SendMessage("Coding Bot"); 
     }); 

だから、最後にそれがここに配置されますの下にそれを移動されました:enter image description here

その他の詳細:はあなたの.NETをチェックしますフレームワークのバージョン、このコードをテストするとき、私は4.6.2を使用していた、とAPI Discord.NETバージョンでは問題が解決しない場合、あなたはここに助けを求めることができます0.9.6

にあった:https://discord.gg/JBp6gSN

弱音
最近、Disc1.NETの最新バージョン、v1.0.0が出ました。 v1からv0.9.6への大幅な変更が行われ、すべてが非同期に基づいて実行されます。この問題により頭痛が増えた場合は、代わりにDiscord.NET v1を使用して簡単に状況を逃れることができます。

+0

ありがとうございました! MyBot bot = [新規] myBot(トークン); stackoverflowのちょうどタイプミスでした。接続する前にコマンドを置くと、私のために固定されました!ありがとうございました! – FritzFurtz

+0

NuGet Packet ManagerでDiscord.NET v1が見つかりません。 – FritzFurtz

+0

@FritzFurtzプレリリース版をダウンロードするには、新しいパッケージソースが必要です。パッケージのソースは「https://www.myget.org/F/discord-net/api/v3/index.json」です。リリース前のAPIパッケージを使用すると、パッケージのv1を確認できます。ドキュメントはまだリリースされていませんが、私がリンクしたチャットのヘルプを見たり、サンプルボットを使用したりすることができます:https://github.com/420foxbot/DiscordExampleBot – WQYeo

2

私はこれが愚かだと知っていますが、あなたは権限を投稿するボットをくすぐりましたか? (これは私に起こりました)

+0

すべての質問:ありがとうございました!私は設定なしのBotTestServerを持っています。サーバーには何の役割もありません。 #generalを右クリックし、@everyoneにメッセージを送信する権限があることを確認しました。ボットの許可を与えるために他に必要なことはありますか? – FritzFurtz

+0

奇妙な。私はあなたに私のコードを送ることができ、あなたが望むならそれを試すことができます。 –

+0

それは本当に素晴らしいだろう! – FritzFurtz

関連する問題