我发现无法使用我的机器人将用户的角色/等级设置为“PLEB”。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
namespace Spoxbot.Modules
{
public class Mod : ModuleBase<SocketCommandContext>
{
[Command("geoff")]
public async Task geoff([Remainder]string user)
{
var role = Context.Guild.Roles.FirstOrDefault(x => x.Name == "PLEB");
await (user as IGuildUser).AddRoleAsync(role);
}
}
}
我想要发生的是,只要用户输入!geoff ,它就会为用户提供“PLEB”
此机器人具有管理员权限。
答案 0 :(得分:1)
目前,您的命令旨在为用户提供一个角色。
!geoff insertuseridhere
正如您的问题所示,您希望每个键入!geoff
的用户都能获得排名。
要实现这一目标,您可以使用命令中的上下文
[Command("geoff")]
public async Task geoff()
{
var role = Context.Guild.Roles.FirstOrDefault(x => x.Name == "PLEB");
await (context.User as IGuildUser).AddRoleAsync(role);
}
修改强> 根据您的评论,您似乎希望它能够提及。
为此,你可以使用IUser。
[Command("geoff")]
public async Task geoff(IUser user)
{
var role = Context.Guild.Roles.FirstOrDefault(x => x.Name == "PLEB");
await (user as IGuildUser).AddRoleAsync(role);
}