Discord.NET中使用RespondAsync时隐藏用户命令及参数的方法问询
使用Discord.NET隐藏用户命令消息的解决方案
要解决既要调用RespondAsync()避免“应用未响应”提示,又要隐藏用户输入的命令及参数的问题,可通过以下几种方式实现:
方案1:调用响应后删除用户原始消息
先调用RespondAsync()完成交互回执,再删除用户发送的命令消息。需确保机器人拥有管理消息权限。
// 发送响应(可设置为仅用户可见的临时消息) await RespondAsync("操作已完成", ephemeral: true); // 删除用户的命令消息 await Context.Message.DeleteAsync();
方案2:修改用户原始消息内容
如果不想删除消息,可将用户的命令内容替换为无关文本,同样需要机器人拥有管理消息权限。
// 发送基础响应避免未提示 await RespondAsync("正在处理请求..."); // 修改用户消息内容,隐藏原始命令和参数 await Context.Message.ModifyAsync(msg => { msg.Content = "该命令已执行,原始内容已隐藏"; });
方案3:结合临时响应+消息处理
若希望响应也仅用户可见,同时隐藏原始命令,可将ephemeral参数设为true,再配合删除或修改原始消息:
// 发送仅用户可见的响应 await RespondAsync("操作已完成,原始命令已隐藏", ephemeral: true); // 删除原始命令消息 await Context.Message.DeleteAsync();
注意:所有涉及删除/修改用户消息的操作,都需要机器人在对应服务器中拥有管理消息的权限,否则会抛出权限不足的异常。
内容的提问来源于stack exchange,提问作者sunnamed
相关产品推荐
相关产品推荐

