2017-08-22 10 views
0

私は不和のボットのために実装したいコマンドの大部分を完了しました。C# - 特定のフレーズが(プレフィックスコマンドではなく)言われているときにdiscord botが関数を実行するようにしました。

[Group( "GroupName")]>機能は、更新されたDiscord.NETでわかりやすく分かりやすいです。しかし、0.9.6のバージョンとは違って、登録されている接頭辞を待たずにボットに機能を実行させる方法は知られていません。 はここ

public async Task HandleCommand(SocketMessage messageParam) 
    { 
     // Don't process the command if it was a System Message 
     var message = messageParam as SocketUserMessage; 
     if (message == null) return; 
     // Create a number to track where the prefix ends and the command begins 
     int argPos = 0; 
     // Determine if the message is a command, based on if it starts with '!' or a mention prefix 
     if (!(message.HasCharPrefix('$', ref argPos) || message.HasMentionPrefix(client.CurrentUser, ref argPos))) return; 
     // Create a Command Context 
     var context = new CommandContext(client, message); 
     // Execute the command. (result does not indicate a return value, 
     // rather an object stating if the command executed successfully) 
     var result = await commands.ExecuteAsync(context, argPos, services); 
     if (!result.IsSuccess) 
      await context.Channel.SendMessageAsync(result.ErrorReason); 
    } 

コードFoxbotガイドから直接コピー&ペーストを入力してください。今私はそれがコマンドを登録する前に '$'または@botの言及を待つことを理解しています。

ボットは特定のウェブページのURL(http://archiveofourown.org/)を探すことができます。ユーザーがリクエストすることなく、ページを読み込んでそのウェブページから特定の要素を印刷します。

答えて

0

現在、次のコード行

if (!(message.HasCharPrefix('$', ref argPos) || message.HasMentionPrefix(client.CurrentUser, ref argPos))) return; 

Return;は、条件が一致しない場合は、コマンドの処理が停止することになりますがあります。この場合、プレフィックスまたはボットの言及チェックです。

コードを展開して、何もする必要がないと判断する前にコードを実行することができます。

if (!(message.HasCharPrefix('$', ref argPos) || message.HasMentionPrefix(client.CurrentUser, ref argPos))) 
{ 
    if(check if there is a website) 
    { 
     // if there is a wesbite, do whatever you want to do with it 
    } 
    return; // still return here, as you don't want further command execution 
} 
関連する問題