通过C#中的Discord Bot授予角色?

时间:2018-02-14 00:36:12

标签: c# bots discord

我发现无法使用我的机器人将用户的角色/等级设置为“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”

此机器人具有管理员权限。

1 个答案:

答案 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);
}