gpt4 book ai didi

C# Discord.NET : Why this ban module prevents anybody from interacting with my bot?

转载 作者:行者123 更新时间:2023-11-30 18:14:16 24 4
gpt4 key购买 nike

我正在使用 Discord.NET API 创建一个 Discord 机器人。一段时间以来,我一直在为我的机器人实现命令和模块,并且我正在尝试向我的机器人添加禁止命令。我发出了命令,所以你必须有一个名为“Bot Admin”的角色。这是我正在使用的代码,似乎是导致问题的原因:

public class Ban : ModuleBase<SocketCommandContext>
{
[Command("ban")]
[RequireBotPermission(GuildPermission.BanMembers)]
public async Task banUser([Remainder]SocketGuildUser usertobehammered, string banre)
{
var rUser = Context.User as SocketGuildUser;
var role = Context.Guild.Roles.FirstOrDefault(x => x.Name == "Bot Admin");

if (rUser.Roles.Contains(role))
{
await ReplyAsync($"User {usertobehammered.Mention} has been banned.");
await Context.Guild.AddBanAsync(usertobehammered, 0, banre);
}

else
{
await ReplyAsync(":no_entry_sign: You need the Bot Admin role to do that!");
}
}
}

我不知道为什么,但有了这个,我的机器人会在我正常运行时上线,但尝试运行任何命令都无济于事。删除类允许用户再次使用命令。

有人知道这里的问题是什么吗?

编辑:仍然不知道这是什么原因,但我确实有另一个命令使用这里也使用的变量“rUser”和“role”,但我不认为这是问题所在。

最佳答案

自己想通​​了,其实很简单。我只需要交换 SocketGuildUser 和周围的字符串,这样它看起来像这样:

[Command("ban")]
[RequireBotPermission(GuildPermission.BanMembers)]
public async Task banUser(string banre, [Remainder]SocketGuildUser usertobehammered)

而不是原来的样子:

[Command("ban")]
[RequireBotPermission(GuildPermission.BanMembers)]
public async Task banUser([Remainder]SocketGuildUser usertobehammered, string banre)

我认为问题是我相信 Remainder 将第一个词之后的任何内容放入下一个参数,这将使 SocketGuildUser 被放入一个字符串,而无需使用类似“SocketGuildUser.mention”的内容显然使得机器人不响应命令。人们,请不要犯我犯的这个愚蠢的错误。 :$

关于C# Discord.NET : Why this ban module prevents anybody from interacting with my bot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50652234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com