//private async Task ProcessRaidLobbyReactionDM(DiscordUser user, DiscordChannel channel, DiscordMessage message, DiscordEmoji emoji) //{ // if (SupportersOnly) // { // var hasPrivilege = await _client.IsSupporterOrHigher(user.Id, _config); // if (!hasPrivilege) // { // await message.RespondAsync($"{user.Mention} does not have the supporter role assigned."); // return; // } // } // var origMessageId = Convert.ToUInt64(Utils.GetBetween(message.Content, "#", "#")); // var lobby = GetLobby(channel, ref origMessageId); // var settings = await GetRaidLobbySettings(lobby, origMessageId, message, channel); // if (settings == null) // { // _logger.Error($"Failed to find raid lobby settings for original raid message id {origMessageId}."); // return; // } // await message.DeleteReactionAsync(emoji, user); // var lobMessage = default(DiscordMessage); // var embedMsg = settings.RaidMessage?.Embeds[0]; // switch (emoji.Name) // { // //case "1⃣": // // break; // //case "2⃣": // // break; // //case "3⃣": // // break; // //case "4⃣": // // break; // case "5⃣": // lobby.UsersComing[user.Id].Eta = RaidLobbyEta.Five; // lobby.UsersComing[user.Id].EtaStart = DateTime.Now; // lobMessage = await UpdateRaidLobbyMessage(lobby, settings.RaidLobbyChannel, embedMsg); // await message.DeleteAllReactionsAsync(); // break; // case "🔟": // lobby.UsersComing[user.Id].Eta = RaidLobbyEta.Ten; // lobby.UsersComing[user.Id].EtaStart = DateTime.Now; // lobMessage = await UpdateRaidLobbyMessage(lobby, settings.RaidLobbyChannel, embedMsg); // await message.DeleteAllReactionsAsync(); // break; // case "❌": // if (!lobby.UsersComing.ContainsKey(user.Id)) // { // lobby.UsersComing.Remove(user.Id); // lobMessage = await UpdateRaidLobbyMessage(lobby, settings.RaidLobbyChannel, embedMsg); // } // break; // } // _config.RaidLobbies.ActiveLobbies[origMessageId] = lobby; // _config.Save(); //} private async Task ProcessRaidLobbyReaction(DiscordUser user, DiscordChannel channel, DiscordMessage message, DiscordEmoji emoji) { _logger.Trace($"RaidLobbyManager::ProcessRaidLobbyReaction [DiscordUser={user.Username}, DiscordChannel={channel.Name}, DiscordMessage={message.Content}, DiscordEmoji={emoji.Name}]"); var isLobbyChannel = (await GetLobbyCategory()).Children.FirstOrDefault(x => x.Id == channel.Id) != null; if (!(_config.RaidChannelIdPool.Contains(channel.Id) || isLobbyChannel)) { return; } var embed = await channel.GetEmbedMessage(message.Id); if (embed == null) { _logger.Warn($"Failed to get embed message."); return; } await _client.SetDefaultRaidReactions(message, false); var lobby = LobbyFromTitle(embed.Title); if (lobby.Gym?.RaidLevel == 0) { _logger.Warn($"Raid at gym '{embed.Title}' is over and doesn't exist."); return; } if (!_config.RaidLobbies.ContainsKey(lobby.ChannelName)) { _config.RaidLobbies.Add(lobby.ChannelName, lobby); } lobby = _config.RaidLobbies[lobby.ChannelName]; if (string.IsNullOrEmpty(lobby.StartedBy)) { lobby.StartedBy = $"{user.Username}#{user.Discriminator}"; lobby.CreatedAt = DateTime.Now; } var lobbyChannel = await CreateLobbyChannel(lobby); if (lobbyChannel == null) { _logger.Warn($"Failed to create or get existing lobby channel for gym {lobby.Gym.Name}."); return; } _logger.Debug($"LOBBY CHANNEL: {lobbyChannel.Name}"); switch (emoji.Name) { case "➡": //Otw await CreatePinnedLobbyMessage(lobby, lobbyChannel, user, true); break; case "✅": //Here await CreatePinnedLobbyMessage(lobby, lobbyChannel, user, false); break; case "❌": //Remove var raidLobby = _config.RaidLobbies[lobby.ChannelName]; var result = lobby.Users.RemoveAll(x => string.Compare(x.Username, $"{user.Username}#{user.Discriminator}", true) == 0); if (result > 0) { await CreatePinnedLobbyMessage(lobby, lobbyChannel, null, false); } break; case "🔄": //Refresh await CreatePinnedLobbyMessage(lobby, lobbyChannel, null, false); break; } _config.Save(Strings.ConfigFileName); }