コード例 #1
0
ファイル: MessageModule.cs プロジェクト: Nexowned/Freud2.0
        public async Task FlagMessageAsync(CommandContext ctx,
                                           [Description("Message.")] DiscordMessage msg        = null,
                                           [Description("Voting timespan.")] TimeSpan?timespan = null)
        {
            msg = msg ?? (await ctx.Channel.GetMessagesBeforeAsync(ctx.Channel.LastMessageId, 1))?.FirstOrDefault();

            if (msg is null)
            {
                throw new CommandFailedException("Cannot retrieve the message!");
            }

            if (timespan?.TotalSeconds < 5 || timespan?.TotalMinutes > 5)
            {
                throw new InvalidCommandUsageException("Timespan cannot be greater than 5 minutes or lower than 5 seconds.");
            }

            IEnumerable <PollEmoji> res = await msg.DoPollAsync(new[] { StaticDiscordEmoji.ArrowUp, StaticDiscordEmoji.ArrowDown }, PollBehaviour.Default, timeout : timespan ?? TimeSpan.FromMinutes(1));

            var votes = res.ToDictionary(pe => pe.Emoji, pe => pe.Voted.Count);

            if (votes.GetValueOrDefault(StaticDiscordEmoji.ArrowDown) > 2 * votes.GetValueOrDefault(StaticDiscordEmoji.ArrowUp))
            {
                string sanitized = FormatterExtensions.Spoiler(FormatterExtensions.StripMarkdown(msg.Content));
                await msg.DeleteAsync();

                await ctx.RespondAsync($"{msg.Author.Mention} said: {sanitized}");
            }
            else
            {
                await this.InformOfFailureAsync(ctx, "Not enough downvotes required for deletion.");
            }
        }
コード例 #2
0
        public async Task DoPoll(CommandContext ctx, DiscordMessage msg, TimeSpan duration, DiscordEmoji[] emojis)
        {
            var results = await msg.DoPollAsync(emojis, timeoutOverride : duration);

            foreach (var result in results)
            {
                await ctx.Channel.SendMessageAsync($"{result.Emoji}: {result.Total}");
            }
        }
コード例 #3
0
        public async Task DoPoll(CommandContext ctx, DiscordMessage msg, TimeSpan?duration = null)
        {
            if (duration == null)
            {
                duration = TimeSpan.FromMinutes(5);
            }

            DiscordEmoji thumbsUp   = DiscordEmoji.FromName(ctx.Client, ":+1:");
            DiscordEmoji thumbsDown = DiscordEmoji.FromName(ctx.Client, ":-1:");

            DiscordEmoji[] emojis  = new DiscordEmoji[] { thumbsUp, thumbsDown };
            var            results = await msg.DoPollAsync(emojis, timeoutOverride : duration);

            foreach (var result in results)
            {
                await ctx.Channel.SendMessageAsync($"{result.Emoji}: {result.Total}");
            }
        }