C#Discord Bot - 在命令参数

时间:2017-02-08 10:56:46

标签: c# bots discord

我想教我的DiscordBot在编写命令后如何处理输入。

我以这种方式创建Command:

private void CreateCommand(string commandName, string parameterName, ParameterType parameterType , string commandValue) // Register this command by the name and the answer value
        {
            commands.CreateCommand(commandName).Parameter(parameterName, parameterType).Do(async (e) =>
            {
                await e.Channel.SendMessage(commandValue); // Bots answer
            });
        }

我使用此方法来缩短下一个方法的代码:

private void Add(string commandName, string commandValue, string commandDescription) // Add a simple command to the List
        {
            singleCommandList.Add(new Tuple<string, string, string>(commandName, commandValue, commandDescription));
        }

        private void Add(string commandName, string parameterName, ParameterType parameterType, string commandValue, string commandDescription) // Add commands with Parameters to the List
        {
            parameterCommandList.Add(new Tuple<string, string, ParameterType, string, string>(commandName, parameterName, parameterType, commandValue, commandDescription));
        }

这是填充我的CommandList

的方法
 private void FillCommandList() // Add all the commands to the List
        {
            Add("test", "success", "test"); // simple Command
            Add("search", "onlineSearch", ParameterType.Multiple, Search("text to look for"), "Google it");
        }

我的问题是我不知道如何填充方法Search()的参数。我必须在那里传递什么?有e.User的东西..?

2 个答案:

答案 0 :(得分:0)

我使用这个非官方的Discord C#Wrapper创建了我自己的Discord.Net机器人:

An unofficial .NET API Wrapper for the Discord client
Their Discord Server

文档中给出的示例并不总是最新的,因为它们对API进行了大量的代码破坏重写,但使用异步模式确实做得很好。
这应该会给你更多关于如何继续你的想法的例子和想法。

确保使用1.0版本 - dev分支。 (截至目前)

其他所有内容都在他们的Github上描述。如果你仍然需要答案加入他们的不和谐。他们非常有帮助。

答案 1 :(得分:0)

使用e.GetArg("parameterName")获取名为“parameterName”的参数。如果ParameterTypeOptionalRequired,则此方法有效。

如果您的ParameterTypeMultiple,请尝试:

    string search = string.Join(" ", e.Args)

获取整个“onlineSearch”参数。