public static async Task <DiscordEmbed> GetEmbedMessage(this DiscordChannel channel, ulong messageId) { var message = await channel.GetMessage(messageId); if (message.Embeds.Count > 0) { return(message.Embeds[0]); } return(null); }
private async Task <DiscordMessage> UpdateRaidLobbyMessage(RaidLobby lobby, DiscordChannel raidLobbyChannel, DiscordEmbed raidMessage) { _logger.Trace($"FilterBot::UpdateRaidLobbyMessage [RaidLobby={lobby.LobbyMessageId}, DiscordChannel={raidLobbyChannel.Name}, DiscordMessage={raidMessage.Title}]"); var coming = await GetUsernames(lobby.UsersComing); var ready = await GetUsernames(lobby.UsersReady); var msg = $"**Trainers on the way:**{Environment.NewLine}```{string.Join(Environment.NewLine, coming)} ```{Environment.NewLine}**Trainers at the raid:**{Environment.NewLine}```{string.Join(Environment.NewLine, ready)} ```"; var lobbyMessage = await raidLobbyChannel.GetMessage(lobby.LobbyMessageId); if (lobbyMessage != null) { var coordinates = Utils.GetLastLine(raidMessage.Description); var latitude = double.Parse(coordinates.Split(',')[0]); var longitude = double.Parse(coordinates.Split(',')[1]); var city = "Unknown"; var loc = _geofenceSvc.GetGeofence(new Location(latitude, longitude)); if (loc == null) { _logger.Error($"Failed to lookup city for coordinates {latitude},{longitude}..."); } city = loc.Name; msg = $"**City:** {city}\r\n{msg}"; await lobbyMessage.DeleteAsync(); lobbyMessage = null; } if (lobbyMessage == null) { lobbyMessage = await raidLobbyChannel.SendMessageAsync(msg, false, raidMessage); lobby.LobbyMessageId = lobbyMessage.Id; } _config.Save(); if (lobbyMessage == null) { _logger.Error($"Failed to set default raid reactions to message {lobby.LobbyMessageId}, couldn't find message..."); return(null); } lobby.LobbyMessageId = lobbyMessage.Id; return(lobbyMessage); }