【问题标题】:Possible to set a user role with a guild id and a role name可以使用公会 ID 和角色名称设置用户角色
【发布时间】:2019-12-10 23:28:46
【问题描述】:

我想通过我的 API 向我的不和谐用户添加角色,withc 发送一个 JSON 字符串及其标签/ID 和角色。

{"errros":[],"success":"true","data":[{"id":"264393690045218816","ranks":"developer,verified"},{"id":"265510731363909632","ranks":"developer"}]}

这个 responseString 在 CheckAccount() 任务中运行。它不是由命令而是由计时器触发的,因此这不起作用,我尝试将其调整为仅使用公会和角色 ID,但无法弄清楚它是如何工作的:

var role = Context.Guild.Roles.FirstOrDefault(x => x.Name == "ROLE NAME");
await (user as IGuildUser).AddRoleAsync(role);

task["id"] = 用户 ID/标签。 rank 是等级名称。

JObject jObject = JObject.Parse(responseString);
JToken jData = jObject["data"];
foreach (var task in jData)
{
    string ranks = task["ranks"].ToString();
    foreach (string rank in ranks.Split(','))
    {
        Console.WriteLine(task["id"].ToString() + " recieved rank " + rank);
    }
}

最后我想通过 API 发送标签/ID 和角色,然后每小时检查并添加角色。

【问题讨论】:

  • 我不确定我是否完全理解什么不起作用。如果您的代码没有在命令中运行,那么Context 来自哪里?此外,您也没有展示如何尝试利用 responseString 中的 Id 和排名来添加角色。执行Console.WriteLine 的代码 sn-p 对您的问题也不是很有用......除非我遗漏了什么。
  • @Anu6is Context 来自我在互联网上找到的所有示例。这就是问题所在,我不知道写什么来代替context。这更像是一个插图。而Console.Write 只是测试的剩余部分。忘记删除了
  • 好的。 Context 只是命令模块中提供的一个变量,用于帮助更轻松地在命令中进行引用。你可以用Context 做的任何事情都可以用DiscordSocketClient 和SocketUserMessage 做,因为Context 实际上只是两者的结合。如果您可以在计时器中访问您的客户端,那么您可以使用yourClientObject.GetGuild(guild_id_here) 来获取公会对象,然后就像上下文示例一样,您可以访问guild.roles。如果您没有用户,您也可以使用 `youGuildObject.GetUser(user_id_here) 从公会获取用户
  • @Anu6is 花了一些时间才弄清楚,但它似乎有效。谢谢。

标签: c# discord.net


【解决方案1】:

我需要手动指定我的公会

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 2021-04-06
    • 1970-01-01
    • 2018-05-09
    • 2021-11-02
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    相关资源
    最近更新 更多