【问题标题】:Discord: apostrophe in command's argument does not work in C#Discord:命令参数中的撇号在 C# 中不起作用
【发布时间】:2017-07-31 23:14:24
【问题描述】:

我在处理命令的参数时遇到问题。在参数中出现撇号 ' 之前,它们可以正常工作。在这种情况下,什么都不会发生。 Bot 什么都不做,应用程序不会崩溃。当我尝试调试该命令时,我发现它甚至不会转到它的代码分支。

例子:

!echo I am fine 有效。

但是!echo I'm fine 没有。

我的代码:

client.UsingCommands(input => { 
  input.PrefixChar = '!';
  input.AllowMentionPrefix = true;
});

command = client.GetService<CommandService>();

command.CreateCommand("echo").Parameter("param", ParameterType.Multiple).Do(async (e) => {
  var channel = e.Server.FindChannels(e.Message.Channel.Name, ChannelType.Text).FirstOrDefault();
  string msg = "";
  for (int i = 0; i < e.Args.Length; i++) {
    msg += e.Args[i] + " ";
  }
  msg = msg.Remove(msg.Length - 1);
  await channel.SendMessage(msg);
});

知道发生了什么以及为什么吗?

【问题讨论】:

    标签: c# bots discord discord.net


    【解决方案1】:

    试试这个:

    command.CreateCommand("echo")
                   .Description("returns commands")
                   .Parameter("message", ParameterType.Unparsed)
                   .Do(async (e) =>
                   {
                       Message[] messageToDelete;
                       int deleteNumber = 1;
                       messageToDelete = await e.Channel.DownloadMessages(deleteNumber);
                       await e.Channel.DeleteMessages(messageToDelete);
    
                       var toReturn = $":envelope: | {e.GetArg("message")}";
                       await e.Channel.SendMessage(toReturn);
                       Console.WriteLine(toReturn);
                   });
    

    【讨论】:

      猜你喜欢
      • 2017-09-15
      • 2012-11-28
      • 2017-05-03
      • 2021-04-28
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 2020-08-07
      相关资源
      最近更新 更多