在C#中清除Discord bot的命令

时间:2016-10-28 04:35:19

标签: c# discord

我没有太多的编码器或任何我只是为了好玩而做这件事! 我和一些朋友在一起的服务器需要一个机器人,当然还有很多机器人可用,但我想我会继续尝试自己的运气。我知道一些基本的代码,我在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.");
   });
}

如果您愿意,可以屏幕截图格式查看代码here

我最初拥有的是一个清除命令,它在代码中删除了x个数量的消息,而不是我想要的数量。例如,我的目标是在Discord中我会做一些事情!purge 10和最后10条消息被删除。我之前拥有的是一个删除前10条消息的!purge命令,但如果我想做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点,所以也可能是这样。

1 个答案:

答案 0 :(得分: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.");
                }