C# 如何使用discord.net 2.2.0 C获取discord中消息作者的昵称#
如何使用Discord.net 2.2.0获取Discord中消息作者的昵称C# 如何使用discord.net 2.2.0 C获取discord中消息作者的昵称#,c#,discord.net,C#,Discord.net,如何使用Discord.net 2.2.0获取Discord中消息作者的昵称 private async Task MessageReceivedAsync(SocketMessage message) { if (StartBit == 0) { await message.Channel.SendMessageAsync("Test"); } StartBit = 1; // The bot should never respond to i
private async Task MessageReceivedAsync(SocketMessage message)
{
if (StartBit == 0)
{
await message.Channel.SendMessageAsync("Test");
}
StartBit = 1;
// The bot should never respond to itself.
if (message.Author.Id == _client.CurrentUser.Id)
return;
var UName = message.Author.Username;
var UID = message.Author.Id;
}
不幸的是,长时间搜索和阅读文档后,我什么也没有得到。尝试将您的消息转换为SocketUserMessage。我已经附上了正确的代码,请编辑您的文章,使代码是正确的
private async Task MessageReceivedAsync(SocketMessage msg)
{
SocketUserMessage message = msg as SocketUserMessage;
if (StartBit == 0)
{
await message.Channel.SendMessageAsync("Test");
}
StartBit = 1;
// The bot should never respond to itself.
if (message.Author.Id == _client.CurrentUser.Id) return;
var UName = message.Author.Username;
var UID = message.Author.Id;
}尝试将您的邮件强制转换为SocketUserMessage。我已经附上了正确的代码,请编辑您的文章,使代码是正确的
private async Task MessageReceivedAsync(SocketMessage msg)
{
SocketUserMessage message = msg as SocketUserMessage;
if (StartBit == 0)
{
await message.Channel.SendMessageAsync("Test");
}
StartBit = 1;
// The bot should never respond to itself.
if (message.Author.Id == _client.CurrentUser.Id) return;
var UName = message.Author.Username;
var UID = message.Author.Id;
}如果你想获得作者的昵称,你可以将其转换为SocketGuildUser,但要注意,如果是DM,则可以为空
var UNick=(message.Author作为SocketGuildUser)。昵称;
您可能还应该检查消息是否来自用户而不是系统
if(!(sockMessage是SocketUserMessage消息))
返回;
所以你的代码看起来像这样
private async Task MessageReceivedAsync(SocketMessage sockMessage)
{
//检查是否有用户发布了该消息
如果(!(sockMessage是SocketUserMessage消息))
返回;
//检查它是否不是DM
如果(!(msg.Author作为SocketGuildUser作者))
返回;
如果(起始位==0)
{
wait message.Channel.SendMessageAsync(“测试”);
}
StartBit=1;
//我通常会检查作者是否不是机器人,但你可以把它改回去
if(message.Author.IsBot)
返回;
var UName=author.Username;
var UNick=作者昵称;
var UID=author.Id;
}
归功于如果你想获得作者的昵称,你可以将其转换为SocketGuildUser,但是要注意,如果是DM,它可以为空
var UNick=(message.Author作为SocketGuildUser)。昵称;
您可能还应该检查消息是否来自用户而不是系统
if(!(sockMessage是SocketUserMessage消息))
返回;
所以你的代码看起来像这样
private async Task MessageReceivedAsync(SocketMessage sockMessage)
{
//检查是否有用户发布了该消息
如果(!(sockMessage是SocketUserMessage消息))
返回;
//检查它是否不是DM
如果(!(msg.Author作为SocketGuildUser作者))
返回;
如果(起始位==0)
{
wait message.Channel.SendMessageAsync(“测试”);
}
StartBit=1;
//我通常会检查作者是否不是机器人,但你可以把它改回去
if(message.Author.IsBot)
返回;
var UName=author.Username;
var UNick=作者昵称;
var UID=author.Id;
}
归功于您需要将
消息转换为作者
SocketGuildUser
。默认情况下,作者
将是一个SocketUser
,它只有用户名
,而没有昵称
,因为昵称仅在公会
上下文中有效。由于也可以通过直接消息发送消息,因此使用了SocketUser
变体。基本上,如果将作者
安全地强制转换为SocketGuildUser
返回null
,则消息通过DM发送。如果施法成功,您将无法访问帮会
和昵称
,您需要将消息施法。作者
作为SocketGuildUser
。默认情况下,作者
将是一个SocketUser
,它只有用户名
,而没有昵称
,因为昵称仅在公会
上下文中有效。由于也可以通过直接消息发送消息,因此使用了SocketUser
变体。基本上,如果将作者
安全地强制转换为SocketGuildUser
返回null
,则消息通过DM发送。如果施法成功,您将无法访问公会
和昵称
抱歉,我是第一次写信给您。我还没有弄明白如何编辑这里的信息。很抱歉,我写的信息不正确,我是第一次写。我还没有弄明白如何编辑这里的信息。