c# - 如何在不和谐的 C# 中踢人
问题描述
我有一些代码旨在让人们陷入不和谐
namespace bot.Core.Commands
{
public class Kick : ModuleBase<SocketCommandContext>
{
[Command("kick"), Summary("")]
public async Task kick(IGuildUser User, string reason = "no reason")
{
User.KickAsync(reason);
}
}
}
int argpos = 0;
if (!(Message.HasStringPrefix("$", ref argpos) || Message.HasMentionPrefix(Client.CurrentUser, ref argpos))) return;
var result = await Commandss.ExecuteAsync(context, argpos);
if(!result.IsSuccess)
{
await context.Channel.SendMessageAsync("Command not found or has failed, Commands can also only be ran by an administrator");
}
但是它总是抛出找不到命令或失败,命令也只能由管理员运行。任何人都可以解释为什么?除了这个之外,所有其他命令都可以正常工作。提前致谢
我在 c# vs 2017 上使用 windows
也不是权限
解决方案
您需要在命令参数[Remainder]
的声明之前添加。reason
namespace bot.Core.Commands
{
public class Kick : ModuleBase<SocketCommandContext>
{
[Command("kick"), Summary("Kicks a user from the guild.")]
public async Task KickCommand(IGuildUser user, [Remainder] string reason = "no reason")
{
user.KickAsync(reason);
}
}
}
否则,在如下命令中:
"$kick @Username Sending NSFW Pics"
“发送”之后的所有内容都将被视为额外参数而不是 的一部分reason
,因此该命令将失败,因为它只接受两个参数。添加[Remainder]
告诉命令查看之后作为同一参数的一部分键入的所有内容。
也就是说,如果您不指定原因,该命令应该可以工作。这是真的?你有没有试过在不记录原因的情况下踢?(只是user.KickAsync()
)
推荐阅读
- reactjs - 使用地图功能反应循环组件,索引错误
- javascript - Discord.js 禁止命令
- java - Angular:检测用户何时停止输入
- javascript - ngOnDestroy() 可以在条件下触发吗?选择复选框时,即使在网格重新加载后,它也会记住我以前的选择
- python - 将值添加到 Dataframe 保留索引
- 2d - Godot:2D Raycast 正朝着相反的方向发展
- node.js - Nodejs sendFile() 禁用换行
- javascript - 功能组件未从 App 容器组件接收道具
- swift - Swift 中的 `!myValue.isEmpty` 和 `myValue.isEmpty == false` 有什么区别?
- batch-file - 在 Windows 中复制文件超级慢