예제 #1
0
        public async Task CreateTournamentCommand(
            [Summary("The name of the tournament.")] string tournamentName,
            [Summary("The format of the tournament.")] string format,
            [Summary("The UTC time of the tournament, in the form HHMM (ie, 1600 for 4PM UTC)")] ushort utcTime,
            [Summary("The calendar date of the tournament in DD/MM/YYYY, DD/MM, or DD. The missing fields will be autofilled.")] string calendarDate = ""
            )
        {
            var tourney = Tournament.GenerateTournament(tournamentName, utcTime, calendarDate, format);

            var msgTask = SendProgressAsync(EmbedHelper.GenerateInfoEmbed(":arrows_counterclockwise: Created tournament. Creating on challonge..."));
            var msg     = await msgTask;

            var ct = await tourney.SetUpChallonge();

            var   atTask = Program.Controller.AddTournament(tourney);
            await atTask;

            await msg.DeleteAsync();

            await ReplyAsync(EmbedHelper.GenerateSuccessEmbed(
                                 $"Created the tournament **{tournamentName}**:" + Environment.NewLine + Environment.NewLine +
                                 $"Date: {tourney.GetStartTimeStr()}" + Environment.NewLine +
                                 $"Challonge URL: {ct.FullChallongeUrl}"
                                 ));

            await SetCurrentTournamentCommand(Program.Controller.Tournaments.Count);
        }
예제 #2
0
        public async Task DeleteChannelsCommand()
        {
            var msg = await Program.DiscordIO.SendMessage("",
                                                          Context.Channel,
                                                          EmbedHelper.GenerateInfoEmbed($":arrows_counterclockwise: Deleting channels - please wait..."));

            await((SocketTextChannel)Program.Config.GetAchievementsChannel()).DeleteAsync();
            await((SocketTextChannel)Program.Config.GetCommandChannel()).DeleteAsync();
            await((SocketTextChannel)Program.Config.GetLogsChannel()).DeleteAsync();
            await((SocketTextChannel)Program.Config.GetActiveMatchesChannel()).DeleteAsync();
            await((SocketTextChannel)Program.Config.GetLeaderboardChannel()).DeleteAsync();
            await((SocketTextChannel)Program.Config.GetLogsChannel()).DeleteAsync();
            await((SocketTextChannel)Program.Config.GetTourneysChannel()).DeleteAsync();
            await((SocketTextChannel)Program.Config.GetSignupLogsChannel()).DeleteAsync();
            await((SocketTextChannel)Program.Config.GetSignupsChannel()).DeleteAsync();
            Program.Config.LogsChannelId          = 0;
            Program.Config.AchievementsChannelId  = 0;
            Program.Config.CommandChannelId       = 0;
            Program.Config.LeaderboardChannelId   = 0;
            Program.Config.HistoryChannelId       = 0;
            Program.Config.ActiveMatchesChannelId = 0;
            Program.Config.TourneysChannelId      = 0;
            Program.Config.SignupLogsChannelId    = 0;
            Program.Config.SignupsChannelId       = 0;

            await msg.DeleteAsync();

            await ReplyAsync(EmbedHelper.GenerateSuccessEmbed("Deleted the bot channels."));
        }
예제 #3
0
        public async Task ResendAchvsCommand() {
            var msg = await SendProgressAsync(
                EmbedHelper.GenerateInfoEmbed($":arrows_counterclockwise: Resending all achievements..."));
                
            foreach (var a in Program.Controller.Achievements.AchievementsList) {
                await a.DeleteMessage();
                await a.SendMessage();
            }

            await ReplyAsync(EmbedHelper.GenerateSuccessEmbed($"Resent {Program.Controller.Achievements.AchievementsList.Count()} achievement(s)."));
        }
예제 #4
0
        public async Task PingCommand()
        {
            var timeAuthorSent     = Context.Message.Timestamp;
            var timeReceivedAuthor = DateTimeOffset.UtcNow;

            var msg = await Program.DiscordIO.SendMessage("", Context.Channel, EmbedHelper.GenerateInfoEmbed(":clock1: Ping received. Measuring latency..."));

            var timeSent = msg.Timestamp;

            var diff1 = Math.Max(0, (timeReceivedAuthor - timeAuthorSent).Milliseconds);
            var diff2 = Math.Max(0, (timeSent - timeReceivedAuthor).Milliseconds);

            await Task.WhenAll(
                ReplyAsync(EmbedHelper.GenerateInfoEmbed($"Gateway receive latency:  **{diff1}ms**" + Environment.NewLine +
                                                         $"Gateway send latency: **{diff2}ms**" + Environment.NewLine +
                                                         $"Total ping: **{diff1 + diff2}ms**", ":ping_pong: Pong!", null)),
                msg.DeleteAsync()
                );
        }
예제 #5
0
        public async Task SetupChannelsCommand()
        {
            var msg = await Program.DiscordIO.SendMessage("",
                                                          Context.Channel,
                                                          EmbedHelper.GenerateInfoEmbed($":arrows_counterclockwise: Setting up channels - please wait..."));

            // Create Categories.
            var achievementsCat = (await Program.DiscordIO.CreateCategory("Achievements")).Id;
            var manageCat       = (await Program.DiscordIO.CreateCategory("Skillbot Management")).Id;
            var skillCat        = (await Program.DiscordIO.CreateCategory("Matches")).Id;
            var tourneyCat      = (await Program.DiscordIO.CreateCategory("Tournaments")).Id;

            // Create channels.
            var achievementsId = (await Program.DiscordIO.CreateChannel("achievements", achievementsCat)).Id;

            var commandsId = (await Program.DiscordIO.CreateChannel("commands", manageCat)).Id;
            var logsId     = (await Program.DiscordIO.CreateChannel("logs", manageCat)).Id;

            var leaderboardId   = (await Program.DiscordIO.CreateChannel("leaderboard", skillCat)).Id;
            var historyId       = (await Program.DiscordIO.CreateChannel("match-history", skillCat)).Id;
            var activeMatchesId = (await Program.DiscordIO.CreateChannel("active-matches", manageCat)).Id;

            var tourneysId   = (await Program.DiscordIO.CreateChannel("tournaments", tourneyCat)).Id;
            var signupLogsId = (await Program.DiscordIO.CreateChannel("signup-log", tourneyCat)).Id;
            var signupsId    = (await Program.DiscordIO.CreateChannel("signups", tourneyCat, true)).Id;

            // Save to config.
            Program.Config.AchievementsChannelId  = achievementsId;
            Program.Config.CommandChannelId       = commandsId;
            Program.Config.LogsChannelId          = logsId;
            Program.Config.LeaderboardChannelId   = leaderboardId;
            Program.Config.HistoryChannelId       = historyId;
            Program.Config.ActiveMatchesChannelId = activeMatchesId;
            Program.Config.TourneysChannelId      = tourneysId;
            Program.Config.SignupLogsChannelId    = signupLogsId;
            Program.Config.SignupsChannelId       = signupsId;

            await msg.DeleteAsync();

            Program.CurLeaderboard.InvokeChange();

            await ReplyAsync(EmbedHelper.GenerateSuccessEmbed("Succesfully created all the required channels. Basic permissions have been set up for the channels. Change the permissions as you please."));
        }
예제 #6
0
        public async Task ViewTournaments()
        {
            var tourneys = Program.Controller.Tournaments;

            if (tourneys == null || tourneys.Count == 0)
            {
                await ReplyAsync(EmbedHelper.GenerateInfoEmbed("There are no tournaments."));

                return;
            }

            var eb = new EmbedBuilder().WithColor(Discord.Color.Blue);

            for (int i = 0; i < tourneys.Count; ++i)
            {
                eb.AddField((i + 1) + " - " + tourneys[i].Name, "Time: " + tourneys[i].GetStartTimeStr());
            }
            await ReplyAsync(eb.Build());
        }
예제 #7
0
 public Task BetterBotCommand(string a)
 {
     return(ReplyAsync(EmbedHelper.GenerateInfoEmbed($"OpenSkillBot is superior.")));
 }