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."); }
/// <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}"); } }; }
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."); }
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}>."); }