通过C#中的Discord Bot授予角色?
我发现无法使用我的机器人将用户的角色/等级设置为“PLEB”通过C#中的Discord Bot授予角色?,c#,bots,discord,C#,Bots,Discord,我发现无法使用我的机器人将用户的角色/等级设置为“PLEB” 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用System.Threading.Tasks; 使用不和; 使用不协调命令; 名称空间Spoxbot.Modules { 公共类Mod:ModuleBase { [命令(“杰夫”)] 公共异步任务geoff([余数]字符串用户) { var role=Context.Guild.Roles.FirstOrDefau
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用不和;
使用不协调命令;
名称空间Spoxbot.Modules
{
公共类Mod:ModuleBase
{
[命令(“杰夫”)]
公共异步任务geoff([余数]字符串用户)
{
var role=Context.Guild.Roles.FirstOrDefault(x=>x.Name==“PLEB”);
wait(用户为IGuildUser).AddRoleAsync(角色);
}
}
}
我想要发生的是,每当用户键入!geoff,它给了他们“PLEB”的用户
此bot具有管理员权限。当前,您的命令旨在为用户提供角色,该用户必须包含在命令中
!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);
}
我希望它更像:!geoff@juan,因此它会在命令后将掷骰分配给该人。
[Command("geoff")]
public async Task geoff(IUser user)
{
var role = Context.Guild.Roles.FirstOrDefault(x => x.Name == "PLEB");
await (user as IGuildUser).AddRoleAsync(role);
}