#discord.net
#discord.net
Вопрос:
Мне нужны SocketGuildUser и SocketGuildChannel, когда приходит сообщение. Я не вижу простого способа получить их без понижения.
private void downCast(SocketMessage msg)
{
SocketUser user = msg.Author;
ISocketMessageChannel channel = msg.Channel;
var gUser = (SocketGuildUser)user;
var Channel = (SocketGuildChannel) channel;
}
Не уверен, при каких обстоятельствах понижение завершится неудачей…
Все это заставляет меня по-настоящему ломать голову. Почему нет связи между SocketMessage и SocketGuild? Нет даже поля для идентификатора Гильдии, чтобы разрешить последующий вызов DiscordSocketClient.GetGuild(идентификатор uint64).
Комментарии:
1. В сообщении нет гильдии, потому что сообщение SocketMessage может также поступать из прямого сообщения (т. Е. Вне контекста гильдии). Так что да, вы должны выполнить кастинг, хотя было бы лучше выполнить мягкое кастинг с
as
помощью so в тех случаях, когда это не удается, ошибки не будет. Как указывалось ранее, это приведет к сбою, если оно от DM.2. Хорошо, это имеет смысл. Я работаю только в контексте гильдии (и «мягкое» приведение соответствует 😕 в F #). Я позволил ему работать весь день, и все было приведено в соответствии с файлом журнала. Я бы принял это как ответ, если бы мог.
3. о, я предположил, что C # …
user as SocketGuildUser
… но если вы уверены, что он всегда находится в гильдии, тогда все в порядке в любом случае.