Beispiel #1
0
        public static async Task LobbyInviteMenu(UserAccount user, IUserMessage message, IEmote emote, ContextIds idList)
        {
            switch (emote.Name.ToLower())
            {
            case "check":
                if (!user.Char.InCombat)
                {
                    if (user.InviteMessages.ContainsKey(message.Id))
                    {
                        var otherUser = UserHandler.GetUser(user.InviteMessages[message.Id]);
                        if (otherUser.HasLobby())
                        {
                            var lobby = otherUser.CombatLobby;

                            user.InviteMessages.Remove(message.Id);
                            user.RemoveAllReactionMessages(14);
                            await message.RemoveAllReactionsAsync();

                            //FOR FUTURE USE- When bot has no permissions, this can be used to remove bot-only reactions
                            //await message.RemoveReactionAsync(await MessageHandler.GetEmoji(736480922152730665), message.Author);
                            if (lobby.IsLobbyFull())
                            {
                                await message.ModifyAsync(m => { m.Content = "Joining failed. Lobby is full."; });
                            }
                            else
                            {
                                lobby.AddPlayer(user);
                                user.CombatLobby = lobby;
                                string url = MessageHandler.GetImageURL(ImageGenerator.PvPSoloLobby(lobby)).Result;
                                await message.ModifyAsync(m => { m.Embed = MonEmbedBuilder.PvPLobby(lobby, url, user); m.Content = ""; });

                                await MessageHandler.PvPLobbyEmojis(message, user);

                                user.ReactionMessages.Add(message.Id, 12);

                                //Update the menu of the person who sent the invite
                                await MessageHandler.UpdateMenu(otherUser, idList.ChannelId, 12, "");

                                /*foreach(KeyValuePair<ulong, int> kvp in otherUser.ReactionMessages)
                                 * {
                                 *  if(kvp.Value == 12)
                                 *  {
                                 *      IMessage teamMess = await message.Channel.GetMessageAsync(kvp.Key);
                                 *      if(teamMess is IUserMessage)
                                 *      {
                                 *          IUserMessage userTeamMess = (IUserMessage)teamMess;
                                 *          await userTeamMess.ModifyAsync(m => {m.Embed = MonEmbedBuilder.TeamMenu(otherUser); m.Content = "";});
                                 *      }
                                 *  }
                                 * }*/
                            }
                        }
                    }
                }
                break;

            case "redx":
                user.InviteMessages.Remove(message.Id);
                user.ReactionMessages.Remove(message.Id);
                await message.ModifyAsync(m => { m.Content = "Invite Declined."; });

                break;

            default:
                break;
            }
        }
Beispiel #2
0
        public static async Task TeamSettingsMenu(UserAccount user, IUserMessage message, IEmote emote, ContextIds idList)
        {
            Team team = user.GetTeam();

            if (team != null)
            {
                switch (emote.Name.ToLower())
                {
                case "back1":
                    user.RemoveAllReactionMessages(8);
                    user.RemoveAllReactionMessages(7);

                    await message.RemoveAllReactionsAsync();

                    await message.ModifyAsync(m => { m.Embed = MonEmbedBuilder.TeamMenu(user); m.Content = ""; });

                    await MessageHandler.TeamMenuEmojis(message, user);

                    break;

                case "edit":
                    if (team.CanAccessSettings(user))
                    {
                        await message.ModifyAsync(m => { m.Content = "**Type your team's name. It must be less than 64 charcters.**"; });

                        user.ExpectedInput         = 2;
                        user.ExpectedInputLocation = message.Channel.Id;
                    }
                    break;

                case "addpicturegreen":
                    if (team.CanAccessSettings(user))
                    {
                        await message.ModifyAsync(m => { m.Content = "**Enter your team's picture as an image URL**"; });

                        user.ExpectedInput         = 3;
                        user.ExpectedInputLocation = message.Channel.Id;
                    }
                    break;

                case "rgb":
                    if (team.CanAccessSettings(user))
                    {
                        await message.ModifyAsync(m => { m.Content = "**Enter RGB values separated with spaces. Ex: 91 255 10**"; });

                        user.ExpectedInput         = 4;
                        user.ExpectedInputLocation = message.Channel.Id;
                    }
                    break;

                case "permissions":
                    if (team.CanAccessSettings(user))
                    {
                        if (team.Permissions == "OwnerOnly")
                        {
                            team.Permissions = "AllMembers";
                        }
                        else if (team.Permissions == "AllMembers")
                        {
                            team.Permissions = "NoPerms";
                        }
                        else if (team.Permissions == "NoPerms")
                        {
                            team.Permissions = "OwnerOnly";
                        }
                        await MessageHandler.UpdateMenu(user, (ISocketMessageChannel)message.Channel, 8, "");
                    }
                    break;

                case "locked":
                case "unlocked":
                    if (team.CanAccessSettings(user))
                    {
                        if (team.OpenInvite)
                        {
                            team.OpenInvite = false;
                        }
                        else
                        {
                            team.OpenInvite = true;
                        }
                        await MessageHandler.UpdateMenu(user, (ISocketMessageChannel)message.Channel, 8, "");
                    }
                    break;

                default:
                    break;
                }
            }
        }