private async Task OnGuildAvailable(SocketGuild arg)
        {
            if (!messageHist.ContainsKey(arg.Id))
            {
                messageHist.Add(arg.Id, new List <MsgInfo>());
            }

            bool found = false;

            if (HasMember(config, "GuildTriggers"))
            {
                foreach (string str in config.GuildTriggers) // we'll loop and find id matches to overwrite the triggerMap entry
                {
                    string[] args = str.Split(':');
                    if (args[0].Equals("" + arg.Id))
                    {
                        found = true;
                        triggerMap.Add(arg.Id, args[1]);
                    }
                }
            }
            if (!found)
            {
                triggerMap.Add(arg.Id, "!"); // default command trigger
            }

            /* This is annoying, but since we have the possibility of parsing
             * huge amounts of text, we need to create a thread for each guild
             * when they join and do all of the text processing there.
             */
            await markov.AddGuild(arg.Id);

            await facts.AddGuild(arg.Id);
        }