public async Task <int> RemoveFromGuild(ulong guild, string term)
    {
        int retval = await MarkovHandler.RemoveTermFromFile(guild + ".txt", term);

        var markov = new MarkovChain <string>(1);

        dict.TryUpdate(guild, markov, this.dict[guild]);

        await LoadGraph(markov, Program.BuildPath(guild + ".txt"), guild);

        BuildNext(guild);
        return(retval);
    }
Exemple #2
0
        private async Task Markov(CommandReplyEmbed embedrep, SocketMessage msg, List <string> args)
        {
            if (!string.IsNullOrWhiteSpace(args[0]))
            {
                string sentence = string.Join(",", args.ToArray());

                try
                {
                    string generated = await MarkovHandler.Generate(sentence);

                    await embedrep.Good(msg, "Markov", generated);
                }
                catch (Exception e)
                {
                    await embedrep.Danger(msg, "Markov", "Something went wrong:\n" + e.ToString());
                }
            }
        }
        private async Task MainAsync()
        {
            var startupStr = string.Format("Bot starting up. ({0} by Michael Flaherty)", Program.VERSION);

            await Log(new LogMessage(LogSeverity.Info, "Startup", startupStr));

            var socketConfig = new DiscordSocketConfig
            {
                WebSocketProvider = WS4NetProvider.Instance,
                LogLevel          = LogSeverity.Verbose
            };

            client   = new DiscordSocketClient(socketConfig);
            commands = new CommandService();
            services = new ServiceCollection().BuildServiceProvider();

            messageHist = new Dictionary <ulong, List <MsgInfo> >();
            triggerMap  = new Dictionary <ulong, string>();
            markov      = new MarkovHandler();
            facts       = new FactHandler();
            random      = new Random();

            client.Log            += Log;
            client.GuildAvailable += OnGuildAvailable;

            client.MessageReceived += HandleCommand;
            await commands.AddModulesAsync(Assembly.GetEntryAssembly());

            await client.LoginAsync(TokenType.Bot, config.DiscordBotToken);

            await client.StartAsync();

            // Connect to steam and pump callbacks
            connection = new SteamConnection(config.SteamUsername, config.SteamPassword);
            connection.Connect();

            if (config.GitHubUpdateRepository.Length != 0 && config.GitHubAuthToken.Length != 0)
            {
                ghClient             = new GitHubClient(new ProductHeaderValue(Program.config.GitHubUpdateRepository));
                ghClient.Credentials = new Credentials(config.GitHubAuthToken);
            }

            // Handle Jobs
            manager = new JobManager(config.JobInterval); // time in seconds to run each job
            if (config.SelfUpdateListener && config.GitHubAuthToken.Length != 0)
            {
                manager.AddJob(new SelfUpdateListener());
            }
            if (config.SteamCheckJob)
            {
                manager.AddJob(new SteamCheckJob(connection));
            }
            if (config.AlliedModdersThreadJob)
            {
                manager.AddJob(new AlliedModdersThreadJob("https://forums.alliedmods.net/external.php?newpost=true&forumids=108", "sourcemod"));
            }

            foreach (uint appid in config.AppIDList)
            {
                manager.AddJob(new UpdateJob(appid));
            }

            manager.StartJobs();

            await Task.Delay(-1);
        }