public async Task ClearCommand(SocketMessage message, BotInstance instance)
        {
            Dictionary <string, int> rolls = instance.Rolls;

            rolls.Clear();
            await message.Channel.SendMessageAsync("Initiative order cleared!");
        }
Exemple #2
0
        public void Handle(SocketMessage message, BotInstance instance)
        {
            var msg = message.Content.Split(' ');

            msg[0] = msg[0].Substring(1, msg[0].Length - 1);

            commands[msg[0]].Invoke(cons, new object[] { message, instance });
        }
        public async Task InitCommand(SocketMessage message, BotInstance instance)
        {
            Dictionary <string, int> rolls = instance.Rolls;
            var msg = message.Content.Split(' ');

            try
            {
                if (msg.Length == 2)
                {
                    var chnl = message.Channel as SocketGuildChannel;

                    string name = chnl.GetUser(message.Author.Id).Nickname;
                    if (name == null)
                    {
                        name = message.Author.Username;
                    }
                    int roll = Convert.ToInt32(msg[1]);

                    if (rolls.ContainsKey(name))
                    {
                        rolls[name] = roll;
                    }
                    else
                    {
                        rolls.Add(name, roll);
                    }
                    await message.Channel.SendMessageAsync(name + ": " + roll);
                }
                else
                {
                    string name = CommandHandler.StringFromArray(msg.Skip(1).Take(msg.Length - 2).ToArray());
                    int    roll = Convert.ToInt32(msg[msg.Length - 1]);

                    if (rolls.ContainsKey(name))
                    {
                        rolls[name] = roll;
                    }
                    else
                    {
                        rolls.Add(name, roll);
                    }
                    await message.Channel.SendMessageAsync(name + ": " + roll);
                }
            }
            catch (Exception e)
            {
                await message.Channel.SendMessageAsync("!init [roll]\n!init [name] [roll]");

                Console.WriteLine(e.Message);
            }
        }
        private async Task MessageRecieved(SocketMessage message)
        {
            var guild = (message.Channel as SocketGuildChannel).Guild;

            botGuildId = guild.Id;

            if (!instances.ContainsKey(guild.Id))
            {
                BotInstance inst = new BotInstance(guild);
                instances.Add(guild.Id, inst);
            }
            if (!message.Author.IsBot)
            {
                await ResolveCommand(message, instances[guild.Id]);
            }
        }
        public async Task OrderCommand(SocketMessage message, BotInstance instance)
        {
            Dictionary <string, int> rolls = instance.Rolls;

            if (rolls.Count > 0)
            {
                if (rolls.Count != 0)
                {
                    if (instance.ChannelOrderIds.ContainsKey(message.Channel.Id))
                    {
                        await message.Channel.DeleteMessageAsync(instance.ChannelOrderIds[message.Channel.Id]);
                    }

                    var orderMessage = await message.Channel.SendMessageAsync(CommandHandler.GetOrder(rolls));

                    instance.ChannelOrderIds[message.Channel.Id] = orderMessage.Id;
                    Console.WriteLine(instance.ChannelOrderIds[message.Channel.Id] + ": " + orderMessage.Id);
                }
            }
            else
            {
                await message.Channel.SendMessageAsync("There are no stored rolls.");
            }
        }
        public async Task RemoveCommand(SocketMessage message, BotInstance instance)
        {
            var msg = message.Content.Split(' ');
            Dictionary <string, int> rolls = instance.Rolls;

            if (rolls.Count != 0)
            {
                string name = StringFromArray(msg.Skip(1).ToArray());
                if (!rolls.Remove(name))
                {
                    await message.Channel.SendMessageAsync("Name not found!");
                }
                else
                {
                    await message.Channel.SendMessageAsync("Removed " + name + "!");

                    if (instance.ChannelOrderIds.ContainsKey(message.Channel.Id))
                    {
                        await message.Channel.DeleteMessageAsync(instance.ChannelOrderIds[message.Channel.Id]);
                    }

                    if (rolls.Count != 0)
                    {
                        instance.ChannelOrderIds[message.Channel.Id] = (await message.Channel.SendMessageAsync(GetOrder(rolls))).Id;
                    }
                    else
                    {
                        await message.Channel.SendMessageAsync("Initiative order is now blank!");
                    }
                }
            }
            else
            {
                await message.Channel.SendMessageAsync("Initiative order is empty!");
            }
        }
        private async Task ResolveCommand(ConsoleMessage message)
        {
            var         msg                = message.Content.Split(' ');
            BotInstance instance           = instances[botGuildId];
            Dictionary <string, int> rolls = instance.Rolls;

            switch (msg[0])
            {
            case "init":
                try
                {
                    string name = CommandHandler.StringFromArray(msg.Skip(1).Take(msg.Length - 2).ToArray());
                    int    roll = Convert.ToInt32(msg[msg.Length - 1]);

                    if (rolls.ContainsKey(name))
                    {
                        rolls[name] = roll;
                    }
                    else
                    {
                        rolls.Add(name, roll);
                    }
                }catch (Exception e)
                {
                    Console.WriteLine("####################################################\n");
                    Console.WriteLine("Something went wrong with inputting initiative roll.");
                }
                break;

            case "order":

                Console.WriteLine("####################################################\n");
                Console.WriteLine(CommandHandler.GetOrder(rolls));
                break;

            case "clear":

                rolls.Clear();
                Console.WriteLine("####################################################\n");
                Console.WriteLine("Rolls cleared.");
                break;

            case "remove":
                try
                {
                    rolls.Remove(CommandHandler.StringFromArray(msg.Skip(1).ToArray()));
                    Console.WriteLine("####################################################\n");
                    Console.WriteLine("Removed.");
                }
                catch (Exception e)
                {
                    Console.WriteLine("####################################################\n");
                    Console.WriteLine("Could not remove name.");
                }
                break;

            case "channel":
                if (msg.Length == 2)
                {
                    ulong newId = Convert.ToUInt64(msg[1]);
                    if (instances.ContainsKey(newId))
                    {
                        botGuildId = newId;
                        Console.WriteLine("####################################################\n");
                        Console.WriteLine("Guild changed to: " + instances[newId].Guild.Name);
                    }
                    else
                    {
                        Console.WriteLine("####################################################\n");
                        Console.WriteLine("Channel id does not exist.");
                    }
                }
                Console.WriteLine("####################################################\n");
                Console.WriteLine(instance.Guild.Name);
                Console.WriteLine(instance.Guild.Id);
                break;

            case "channels":
                Console.WriteLine("####################################################\n");
                foreach (BotInstance inst in instances.Values)
                {
                    Console.WriteLine(inst.Guild.Name + ": " + inst.Guild.Id);
                }
                break;

            case "say":

                await instance.Channel.SendMessageAsync(CommandHandler.StringFromArray(msg.Skip(1).ToArray()));

                Console.WriteLine("####################################################\n");
                Console.WriteLine(CommandHandler.StringFromArray(msg.Skip(1).ToArray()));
                break;

            default:
                break;
            }

            Console.Write("\n");
            Console.WriteLine("####################################################");
            Console.Write("\n");
            Console.Write("\n");
        }
 private async Task ResolveCommand(SocketMessage message, BotInstance instance)
 {
     ch.Handle(message, instance);
 }