我希望我的机器人能够回复相同的消息,无论它收到什么命令。我知道在知道命令时如何回复命令但在这里我想回复一个特定的字符串而不管命令。
我试过了:
[Command("")]
public async Task gg()
{
await ReplyAsync("gg");
await Context.Channel.SendMessageAsync("hi there");
}
但显然我遇到了运行时错误,因为它无法添加空白或空命令。 (错误日志无用)
根本不放置[Command(string)]
永远不会触发我可以做出的任务。
答案 0 :(得分:3)
假设您在设置命令服务时遵循Discord.NET documentation tutorials ...
您可能拥有<select class="form-control" id="group" formControlName="groupId">
<option selected disabled hidden></option>
<option *ngFor="let group of groups" [value] = "group.groupId">
{{group.name}}
</option>
</select>
函数或类似的函数。它应该包含一行代码如下:
HandleCommand
这基本上意味着“如果此消息在开始时没有前缀,则退出该功能”。 (if(!(message.HasStringPrefix("PREFIX", ref argPos))) return;
为message
且SocketUserMessage
为argPos
,通常为0)
在那之后放置你的代码行,所以它看起来像这样......
int
但是,如果您希望机器人仅在机器人找不到合适的命令时回复用户发送的当前命令,那么您可以这样做:
//Blah
if(!(message.HasStringPrefix("PREFIX", ref argPos))) { return; }
await message.Channel.SendMessageAsync("blah");
//stuff
答案 1 :(得分:0)
无法将其作为命令实现。您必须订阅DiscordSocketClient
的{{1}}活动,只需在信息触发时将信息发回频道。
private async Task OnMessageReceived(SocketMessage socketMessage)
{
// We only want messages sent by real users
if (!(socketMessage is SocketUserMessage message))
return;
// This message handler would be called infinitely
if (message.Author.Id == _discordClient.CurrentUser.Id)
return;
await socketMessage.Channel.SendMessageAsync(socketMessage.Content);
}