【问题标题】:C# Discord.NET Commands How to Have a String Array as an ArgumentC# Discord.NET 命令如何将字符串数组作为参数
【发布时间】:2018-04-12 01:08:19
【问题描述】:

我使用的是 Discord.NET 1.0.2,这个问题是 Discord.NET 特有的。

我正在使用 Discord.Commands 来处理我的命令,并且我将它们初始化

var msg = message as SocketUserMessage;
var context = new SocketCommandContext(_client, msg);
int argPos = 0;
if(msg.HasCharPrefix('>', ref argPos))
{
    var result = await _service.ExecuteAsync(context, argPos);
}

然后在我的单独类中为我有一个特定的命令

public class Command : ModuleBase<SocketCommandContext>
{
    [Command("test")]
    public async Task balanceCommmand(String[] stringArray)
    {
        // code
    }
}

但是,在运行程序时,我收到System.InvalidOperationException“附加信息:没有找到类型String[]的类型读取器,必须指定一个”

之前在async任务下用过参数,但是好像不想有一个String数组作为参数。

如何使用 Discord.Commands 1.0.2 版将字符串数组作为参数传递给命令。

如果没有办法做到这一点,有没有办法通过使用替代方法来模仿?

我在 google 上看了一圈,没有找到和我有类似问题甚至类似问题的人。

【问题讨论】:

  • 您可以使用CommandServiceAddTypeReader方法添加自定义TypeReader

标签: c# arrays discord discord.net


【解决方案1】:

您需要将params 放在前面,而不是仅仅String[]

public class Command : ModuleBase<SocketCommandContext>
{
    [Command("test")]
    public async Task balanceCommmand(params String[] stringArray)
    {
        // code
    }
}

参数关键字:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/params

【讨论】:

    猜你喜欢
    • 2017-11-11
    • 2015-12-26
    • 2023-03-27
    • 2015-12-17
    • 2017-07-26
    • 1970-01-01
    • 2014-12-11
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多