예제 #1
0
        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);
        }
예제 #2
0
        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);
        }