【发布时间】:2020-08-25 04:05:39
【问题描述】:
这是我想出的代码
var roleMuted = ctx.Guild.GetRole(role id);
var userId = ctx.Message.MentionedUsers.First().Id;
DiscordMember member = ctx.Guild.GetMemberAsync(user); //exception here
await member.GrantRoleAsync(roleMuted);
它给了我一个例外
CS0029 无法将类型
"System.Threading.Tasks.Task< DSharpPlus.Entities.DiscordMember>"隐式转换为"DSharpPlus.Entities.DiscordMember"
正如您在此处看到的 - 我在该行中的意图是创建一个 DiscordMember 类的变量并将其设置为 ctx.Guild.GetMemberAsync() 返回的 DiscordMember,但出于某种原因,Visual Studio 告诉我DiscordMember,由GetMemberAsync() 返回的DiscordMember 与我尝试创建的DiscordMember 不同,以便以后用于.GrantRoleAsync(),这让我很困惑。
编辑1**
而且我必须补充一点,如果我将DiscordMember 替换为var 以使该行成为
var member = ctx.Guild.GetMemberAsync(user);
然后我没有给我一个关于转换失败的异常,我根本无法为member 变量调用.GrantRoleAsync() 方法(异常CS1061)
【问题讨论】:
-
请不要在您的问题标题中添加标签。您已经为此目的使用了一个完全足够的标记系统。