UsingCommands(input =>
{
input.PrefixChar = _dbContext.Prefix;
//input.CustomPrefixHandler = message => 5;
input.AllowMentionPrefix = true;
}));
这是正常设置的方式。前缀从文件中提取并作为PrefixChar放入内存。
_commandService.CreateCommand("changeprefix").Parameter("message").Do(async e =>
{
char prefix;
if (!char.TryParse(e.Args[0], out prefix))
{
await e.User.SendMessage($"Please use the correct format: {_dbContext.Prefix}changeprefix ");
}
else
{
_dbContext.SetPrefix(prefix);
//_commandService.Config.CustomPrefixHandler(e.Message);
await e.User.SendMessage($"Prefix is now {_dbContext.Prefix}");
}
});
这是用户想要更改前缀时运行的命令。在Json文件中更改了前缀,但我似乎无法找到更改CommandService.config的方法,以便它现在正在寻找新的前缀。
我更改了Json文件,它显示文件的内存已更改,但唯一不改变的是CommandService.Config PrefixChar。
我已经评论了一些使用CustomPrefixHandler尝试使其工作的方法,但我似乎仍然无法开始工作。
编辑:
var client = new DiscordClient(input =>
{
input.LogLevel = LogSeverity.Info;
input.LogHandler = Log;
}).UsingCommands(input =>
{
input.PrefixChar = _dbContext.Prefix;
input.CustomPrefixHandler = message => 5;
input.AllowMentionPrefix = true;
});
_commandService = new CommandService();
_commandService = client.GetService<CommandService>();
这就是我尝试实例化新命令服务的方法。如果我使用它它仍然只适用于原始前缀。例如:
!changeprefix# //然后运行另一个命令
'#'帮助//无效
!help // Works