我想教我的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
的东西..?
答案 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”的参数。如果ParameterType
为Optional
或Required
,则此方法有效。
如果您的ParameterType
是Multiple
,请尝试:
string search = string.Join(" ", e.Args)
获取整个“onlineSearch”参数。