首页 文章

在C#中清除Discord bot的命令

提问于
浏览
0

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

You can view the code here in screenshot format if you prefer

我最初拥有的是一个清除命令,它在代码中删除了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);
});
}

you can view the code here in screenshot format if you prefer

这工作得很好,但正如我所说的那样效率不高 .

现在,我将完全诚实地说,我现在使用的方法(那个不起作用的方法)是对Gist的解释 .

所以它目前所做的是......绝对没有..它过去做的是删除我告诉它在代码中删除的x消息量,例如,如果我想删除服务器中的7条消息,它将删除10 .

我想要它做的是我可以告诉机器人删除服务器中的x数量的消息,而不管它的数量,而不是如果我想删除7它删除10 .

也许我很容易错过一些东西?也许我只是忽略了一些愚蠢的东西?我失去了合法性 . 因为我正在写这篇文章,所以也是早上6点,所以也可能是这样 .

1 回答

  • 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.");
                    }
    

相关问题