Как получить ник автора сообщения в Discord с помощью Discord. net 2.2.0 C# - PullRequest
0 голосов
/ 16 июня 2020

Как с помощью Discord получить ник автора сообщения в Discord. net 2.2.0.

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;
}

Долгие поиски и чтение документации, к сожалению, ничего не дали.

Ответы [ 2 ]

0 голосов
/ 22 июня 2020

Если вы хотите получить ник автора, вы можете преобразовать его в SocketGuildUser, , но будьте осторожны, он может быть нулевым, если это DM .

var UNick = (message.Author as SocketGuildUser).Nickname;

Также вам, вероятно, следует проверьте, пришло ли сообщение от пользователя, а не от системы

if (!(sockMessage is SocketUserMessage msg))
    return;

Таким образом, ваш код будет выглядеть примерно так

private async Task MessageReceivedAsync(SocketMessage sockMessage) 
{ 
    // Check if a user posted the message
    if (!(sockMessage is SocketUserMessage msg))
        return;

    // Check if it is not a DM
    if (!(msg.Author as SocketGuildUser author))
        return;

    if (StartBit == 0) 
    { 
        await message.Channel.SendMessageAsync("Test");
    }

    StartBit = 1; 

    // I usualy check if the author is not bot, but you can change that back
    if (message.Author.IsBot) 
        return; 

    var UName = author.Username; 
    var UNick = author.Nickname;
    var UID = author.Id;
}

Кредит на Anu6is

0 голосов
/ 16 июня 2020

Попробуйте передать свое сообщение в 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; 

}

...