public async Task ExecuteAsync(SocketUserMessage input, string[] parameters)
{
if (parameters.Length == 0)
{
parameters[0] = "Unspecified";
return;
}
var allBans = await Context.Guild.GetBansAsync();
bool isBanned = allBans.Select(b => b.User).Where(u => u.Username == Context.User.Username).Any();
if (!isBanned)
{
var targetHighest = (Context.User as SocketGuildUser).Hierarchy;
var senderHighest = (Context.User as SocketGuildUser).Hierarchy;
if (targetHighest < senderHighest)
{
await Context.Guild.AddBanAsync(Context.User);
await Context.Channel.SendMessageAsync($"**{Context.User.Username}** has been banned by Moderator {Context.User}. Reason: **{parameters}**");
var dmChannel = await Context.User.GetOrCreateDMChannelAsync();
await dmChannel.SendMessageAsync($"You have been banned from **{Context.Guild.Name}** by Moderator **{Context.User}** for **{parameters}**");
}
}
}
所以我试图制定一个禁止人的命令,但所有禁止持续获得的值。我不确定我是否写错了,或者它是否是真正的错误..
感谢您的帮助。
答案 0 :(得分:0)
Guild.GetBansAsync()
返回在此服务器上禁止的用户列表,而不是调用者想要禁止的用户列表。
相反,您应该从来电者的留言中获取提及列表
您可以Context.Message.MentionedUser
获取所提及的用户列表或
Context.Message.MentionedUserIds
获取上述用户的ID列表。
最后,你可以await Guild.AddBanAsync(id/user)
(禁止here的文档,您可以传入一些可选参数。)