Esempio n. 1
0
        public async Task TempMute(IGuildUser user, double duration, [Optional][Remainder] string reason)
        {
            _mutes.Set(user.Id.ToString() + "," + Context.Guild.Id.ToString(), (DateTime.UtcNow + new TimeSpan((long)(duration * TimeSpan.TicksPerHour))).ToBinary().ToString());
            string _displayName = user.GetDisplayName();

            await user.Mute();

            IMessage messageToDel = await ReplyAsync($":white_check_mark: Successfully muted {_displayName} for {duration} hours.");

            _ = messageToDel.TimedDeletion(3000);
            await Context.Message.DeleteAsync();

            await _auditLog.AddEntry($"{_displayName} was muted for {duration} hours.");
        }
Esempio n. 2
0
        /// <summary>
        /// Registers a method that will log messages that include staff mentions.
        /// </summary>
        private void RegisterStaffPingLogging()
        {
            _client.MessageReceived += async(s) =>
            {
                if (!(s is SocketUserMessage msg) || s.Author.IsBot)
                {
                    return;
                }
                if (!Data.Settings.Has("staff-role"))
                {
                    return;
                }

                SocketGuild guild     = (msg.Channel as SocketGuildChannel).Guild;
                SocketRole  staffRole = guild.Roles.FirstOrDefault(r => r.Name == Data.Settings.Get("staff-role"));
                if (staffRole != null && s.MentionedRoles.Contains(staffRole))
                {
                    string author         = msg.Author.Mention;
                    string messageLink    = $@"https://discordapp.com/channels/{ guild.Id }/{ msg.Channel.Id }/{ msg.Id }";
                    string messageContent = msg.Content.Replace(staffRole.Mention, "@" + staffRole.Name);

                    await _auditLog.AddEntry($"{ author } mentioned staff in the following message! (<{ messageLink }>)\n```\n{ messageContent }\n```");

                    Log.WriteLine($"{author} mentioned @Staff in the following message: {messageLink}");
                }
            };
        }
Esempio n. 3
0
        public async Task Kick(IGuildUser user, [Optional][Remainder] string reason)
        {
            string _displayName = user.GetDisplayName();
            await user.KickAsync(reason);

            IMessage messageToDel = await ReplyAsync($":white_check_mark: {_displayName} was kicked.");

            _ = messageToDel.TimedDeletion(3000);

            await _auditLog.AddEntry($"{_displayName} was kicked.");
        }
Esempio n. 4
0
        public async Task Clear(int amount, [Optional] IGuildUser user)
        {
            int count = 0;

            if (amount <= 0)
            {
                throw new System.Exception("Please provide a valid amount of messages to delete.");
            }
            await Context.Message.DeleteAsync();

            if (user == null)
            {
                var messages = await Context.Channel.GetMessagesAsync(amount).Flatten();

                await Context.Channel.DeleteMessagesAsync(messages);
            }
            else
            {
                var messages = await Context.Channel.GetMessagesAsync(500).Flatten();

                var messagesForDeletion = new List <IMessage>();
                foreach (IMessage message in messages)
                {
                    if (message.Author == user && count < amount)
                    {
                        messagesForDeletion.Add(message);
                        count++;
                    }
                }
                await Context.Channel.DeleteMessagesAsync(messagesForDeletion);
            }

            int clearedMessages = user == null ? amount : count;

            IMessage messageToDel = await ReplyAsync($":white_check_mark: Successfully cleared {clearedMessages} messages{((user != null) ? $" sent by {user.GetDisplayName()}" : string.Empty)}.");

            _ = messageToDel.TimedDeletion(3000);

            await _auditLog.AddEntry($"{(Context.User as IGuildUser).GetDisplayName()} cleared {clearedMessages} messages{((user != null) ? $" sent by {user.GetDisplayName()}" : string.Empty)} in <#{Context.Channel.Id}>.");
        }