-7

C# で Skype ボットを作成していますが、問題が発生しています。自分のコマンドを読み取るのではなく、他の人が受け取ったコマンドのみを読み取ります。

「!Resolve (ユーザー名)」のようなものを追加すると、コードがすべてバグアップされます。つまり、起動時にツールがクラッシュするだけです。

誰かが大きな問題があるかどうかを見てください。

private Skype skype;
    private const string trigger = "!";
    private const string nick = "The OG Bot";

この

private string ProcessCommand(string str)
    {
        string result;
        switch (str)
        {
            case "resolve":
                result = "Currently Not Working Will Fix Soon.";
                break;
            case "help":
                result = "Here are some commands you can run. \n !resolve \n !date \n !time \n !who \n !swag \n !ip";
                break;
            case "date":
                result = "Current Date is: " + DateTime.Now.ToLongDateString();
                break;
            case "time":
                result = "Current Time is: " + DateTime.Now.ToLongTimeString();
                break;
            case "who":
                result = "This API was created by TehMerkMods";
                break;
            case "ip":
                result = new WebClient().DownloadString("http://icanhazip.com");
                break;
            case "swag":
                result = "(mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) ";
                break;
            default:
                result = "Sorry, I do not recognize your command";
                break;
        }

        return result;
    }

そして最後に

private void skype_MessageStatus(ChatMessage msg, TChatMessageStatus status)
    {
        if (TChatMessageStatus.cmsRead == status)
        {
            return;
        }

        if (msg.Body.IndexOf(trigger) == 0 && TChatMessageStatus.cmsReceived == status)
        {
            string command = msg.Body.Remove(0, trigger.Length).ToLower();
            skype.SendMessage(msg.Sender.Handle, nick + " : " + ProcessCommand(command));
        }
    }
4

2 に答える 2

1

「受信」のみを取得しています。「送信」も取得する必要があります

例:

if (TChatMessageStatus.cmsReceived Or Status = TChatMessageStatus.cmsSent)
于 2015-04-26T15:20:28.653 に答える
0

コードの最後のセクションに、TChatMessageStatus.cmsReceived のみを検索する if ステートメントがあります。メッセージを送信するときは、自分のメッセージを受信しないため、このステートメントは当てはまりません。

プログラムのクラッシュについては...もっと情報を提供する必要があります。

于 2015-04-09T06:13:29.737 に答える