2016-10-28 33 views
0

我不是一個編碼器或任何我只是爲了好玩而做的事情! 我和一些朋友在一起的服務器需要一個機器人,當然有很多機器人可用,但我認爲我會繼續前進,並嘗試自己的運氣。我知道一些基本的代碼,並且我用C#編寫了一個簡單的bot,但是對於我來說,我無法弄清楚如何進行清除命令。 我現在已經創建了是這樣的:清除C中的一個不和諧的機器人命令#

RegisterPurgeCommand(); 
private void RegisterPurgeCommand() 
{ 
    commands.CreateCommand("purge") 
    .Parameter("PurgeAmount") 
    .Do(async (e) => 
    { 
     var messagesToDelete = await e.Channel.DownloadMessages(convert.ToInt32(e.GetArg("purgeAmount"))); 
     await e.Channel.DeleteMessages(messagesToDelete); 
     await e.Channel.SendMessage(e.GetArg("purgeAmount") + "Messages Deleted."); 
    }); 
} 

可以在截圖的格式,如果你喜歡

我最初有是在用x量刪除消息的清除命令查看代碼here代碼,而不是我想要的數量。例如,我的目標是在Discord中,我會沿着!purge 10的方向做一些事情,最後10條消息被刪除。 !我以前曾是刪除以前的10個消息的清除命令,但如果我想爲例子做7,但仍然會做10

的代碼,這個是:

RegisterPurgeCommand(); 
private void RegisterPurgeCommand() 
{ 
    commands.CreateCommand("purge") 
     .Do(async (e) => 
{ 
    Message[] messagesToDelete; 
    messagesToDelete = await e.Channel.DownloadMessages(100); 
    await e.Channel.DeleteMessages(messagesToDelete); 
}); 
} 

如果您願意,您可以查看代碼here的屏幕截圖格式

這工作得很好,但正如我所說的效率不高。

現在,我會完全誠實的說,我現在使用的方法(不工作的方法)是關於Gist的解釋。

那麼它目前的功能是什麼......絕對沒有什麼..它用來做的是刪除x數量的消息,我告訴它刪除在代碼因此,例如,如果我想刪除7消息它會刪除的服務器10.

我希望它能做的是我可以告訴機器人不論其數量如何刪除服務器中的x消息量,而不是如果我想刪除7它刪除10。

也許我很容易失去一些東西?也許我只是忽略了一些愚蠢的東西?我失去了合法性。我在寫這篇文章的時候也是6點,所以也可能是這樣。

+0

請考慮澄清文本 –

+0

您是否在e.GetArg(「PurgeAmount」)中嘗試過大寫字母P? – Eirik

回答

0

您正在解析一個參數PurgeAmount,但實際上並沒有使用它。

messagesToDelete = await e.Channel.DownloadMessages(100); 

在這一行,而不是使用100,我的版本使用排氣量參數

編輯:

所以這是我怎麼做到的,忽略控制檯的東西那只是調試。

    Console.WriteLine(_channel.Users); 
       var userPermissions = _user.GetPermissions(_channel).ManageMessages; 
       Console.WriteLine("Admin" + userPermissions); 
       int number = int.Parse(_parameter); 
       Message[] message = new Message[number]; 
       message = _channel.DownloadMessages(number).Result; 
       if (userPermissions == true) 
       { 
        _channel.DeleteMessages(message); 
        Console.WriteLine("Channel Admin: " + _user + " deleted messages from the channel: " + _channel); 
       } 
       else 
       { 
        Console.WriteLine("User: " + _user + " tried to delete messages from: #" + _channel + " when they aren't an admin there."); 
       } 
+0

這將是相當無效的,因爲例如我給清除量參數類似20,但我想刪除5個消息,它仍然會刪除20,對不對? – Promises

+0

但purgeAmount參數應該是要清除的消息的數量,那麼如果要刪除5個,爲什麼要給它20個?如果你想我也有刪除消息命令的代碼。要我發佈它? –

+0

如果可以的話,那會很好 – Promises

相關問題