Пример #1
0
        public async Task ReactionReceived(Cacheable <IUserMessage, ulong> cacheMessage, ISocketMessageChannel channel, SocketReaction reaction)
        {
            try
            {
                if (reaction.User.Value.IsBot)
                {
                    return;
                }

                //TO BE REMOVED- SAVE TOWNS EVERY 5-10 MINS INSTEAD. CREATE SAFE SHUTDOWN METHOD THAT SAVES TOWNS/USERS ETC.
                TownHandler.SaveTowns();

                var message = await cacheMessage.GetOrDownloadAsync();

                var user = UserHandler.GetUser(reaction.UserId);
                //Console.WriteLine($"Cache {cacheMessage.Id}\nMessage {message.Id}\nReaction: {reaction.MessageId}");

                if (user.ReactionMessages.ContainsKey(message.Id))
                {
                    await EmoteCommands.ParseEmote(user, message, reaction);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
                Console.WriteLine(e.Message);
            }
        }
Пример #2
0
        public async Task DataWipe()
        {
            ContextIds idList = new ContextIds(Context);
            await MessageHandler.SendMessage(idList, "User data cleared. Reboot bot to take effect.");

            UserHandler.ClearUserData();
            CombatHandler2.ClearCombatData();
            TownHandler.ClearTownData();
        }
Пример #3
0
 private void Awake()
 {
     instance  = this;
     shopZone  = GameObject.Find("ShopZone");
     sellZone  = GameObject.Find("SellZone");
     moneyText = GameObject.Find("MoneyText").GetComponent <Text>();
     fullDeck  = GlobalValues.Deck;
     LoadGlobalValues();
     LoadPrices();
     PopulateShopZone();
     PopulateSellZone();
 }
Пример #4
0
        public static async Task CreateTeamMenu(UserAccount user, IUserMessage message, IEmote emote, ContextIds idList)
        {
            switch (emote.Name.ToLower())
            {
            case "back1":
                user.RemoveAllReactionMessages(9);
                user.RemoveAllReactionMessages(1);

                await message.RemoveAllReactionsAsync();

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

                await MessageHandler.MenuEmojis(message);

                user.ReactionMessages.Add(message.Id, 1);
                break;

            case "team":
                Team t = new Team(true);
                t.AddMember(user);
                TownHandler.GetTown(user.Char.CurrentGuildId).Teams.Add(t);

                if (user.ExpectedInput == 5)
                {
                    user.ExpectedInput         = -1;
                    user.ExpectedInputLocation = 0;
                }

                user.RemoveAllReactionMessages(9);
                user.RemoveAllReactionMessages(7);

                await message.RemoveAllReactionsAsync();

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

                await MessageHandler.TeamMenuEmojis(message, user);

                break;

            case "invite":
                await message.ModifyAsync(m => { m.Content = "**Tag someone in the team you want to join. The team must be open.**"; });

                user.ExpectedInput         = 5;
                user.ExpectedInputLocation = message.Channel.Id;
                break;

            default:
                break;
            }
        }
Пример #5
0
        private async Task MessageRecieved(SocketMessage messageParam)
        {
            try
            {
                //TO BE REMOVED- SAVE TOWNS EVERY 5-10 MINS INSTEAD. CREATE SAFE SHUTDOWN METHOD THAT SAVES TOWNS/USERS ETC.
                TownHandler.SaveTowns();

                //Don't process the command if it was a system message
                var message = messageParam as SocketUserMessage;
                if (message == null)
                {
                    return;
                }

                //Create a number to track where the prefix ends and the command begins
                int argPos = 0;

                //If the user who sent that message is expecting input, parse the message for inputs.
                var user = UserHandler.GetUser(message.Author.Id);
                if (user.ExpectedInput != -1)
                {
                    var con = new SocketCommandContext(_client, message);
                    await MessageHandler.ParseExpectedInput(message, user, con);
                }

                // Determine if the message is a command based on the prefix and make sure no bots trigger commands
                if (!(message.HasCharPrefix('!', ref argPos) ||
                      message.HasMentionPrefix(_client.CurrentUser, ref argPos)) ||
                    message.Author.IsBot)
                {
                    return;
                }

                // Create a WebSocket-based command context based on the message
                var context = new SocketCommandContext(_client, message);

                //Update user's info
                UserHandler.UpdateUserInfo(context.User.Id, context.User.GetOrCreateDMChannelAsync().Result.Id, context.User.Username, context.User.Mention, context.User.GetAvatarUrl());

                // Execute the command with the command context we just
                // created, along with the service provider for precondition checks.
                await _commands.ExecuteAsync(context, argPos, services : null);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
                Console.WriteLine(e.Message);
            }
        }
Пример #6
0
        public static async Task TeamMenu(UserAccount user, IUserMessage message, IEmote emote, ContextIds idList)
        {
            Team team = user.GetTeam();

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

                    await message.RemoveAllReactionsAsync();

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

                    await MessageHandler.MenuEmojis(message);

                    user.ReactionMessages.Add(message.Id, 1);
                    break;

                case "invite":
                    if (team.CanInvite(user))
                    {
                        await message.ModifyAsync(m => { m.Content = "**Please tag the player(s) you wish to invite.**"; });

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

                case "kick_player":
                    if (team.CanKick(user))
                    {
                        await message.ModifyAsync(m => { m.Content = "**Please tag the player(s) you wish to kick.**"; });

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

                case "exit":
                    bool leader = false;
                    if (team.Members.IndexOf(user) == 0)
                    {
                        leader = true;
                    }

                    team.KickMember(user);

                    if (team.Members.Count > 0)
                    {
                        if (leader)
                        {
                            await MessageHandler.SendMessage(user.Char.CurrentGuildId, message.Channel.Id, $"{team.Members[0].Mention}, you are now the team leader.");
                        }
                    }
                    else
                    {
                        TownHandler.GetTown(user.Char.CurrentGuildId).Teams.Remove(team);
                    }

                    user.RemoveAllReactionMessages(9);
                    user.RemoveAllReactionMessages(7);

                    await message.RemoveAllReactionsAsync();

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

                    await MessageHandler.TeamMenuEmojis(message, user);

                    break;

                case "settings":
                    if (team.CanAccessSettings(user))
                    {
                        user.RemoveAllReactionMessages(7);
                        user.RemoveAllReactionMessages(8);

                        await message.RemoveAllReactionsAsync();

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

                        await MessageHandler.TeamSettingsEmojis(message, user);

                        user.ReactionMessages.Add(message.Id, 8);
                    }
                    break;

                case "disband":
                    if (team.CanDisband(user))
                    {
                        TownHandler.GetTown(user.Char.CurrentGuildId).Teams.Remove(team);

                        user.RemoveAllReactionMessages(9);
                        user.RemoveAllReactionMessages(7);

                        await message.RemoveAllReactionsAsync();

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

                        await MessageHandler.TeamMenuEmojis(message, user);
                    }
                    break;

                default:
                    break;
                }
            }
        }
Пример #7
0
 public async Task Save()
 {
     UserHandler.SaveUsers();
     TownHandler.SaveTowns();
     await ReplyAsync("Data saved!");
 }