mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-08 20:28:55 -05:00
Rewrite audio (multivoice) (#249)
This commit is contained in:
parent
de5710082e
commit
eb6451a317
2356
cogs/audio.py
2356
cogs/audio.py
File diff suppressed because it is too large
Load Diff
70
cogs/mod.py
70
cogs/mod.py
@ -5,8 +5,6 @@ from .utils import checks
|
||||
from __main__ import send_cmd_help, settings
|
||||
import os
|
||||
import logging
|
||||
import json
|
||||
import asyncio
|
||||
|
||||
class Mod:
|
||||
"""Moderation tools."""
|
||||
@ -56,7 +54,8 @@ class Mod:
|
||||
author = ctx.message.author
|
||||
try:
|
||||
await self.bot.kick(user)
|
||||
logger.info("{}({}) kicked {}({})".format(author.name, author.id, user.name, user.id))
|
||||
logger.info("{}({}) kicked {}({})".format(
|
||||
author.name, author.id, user.name, user.id))
|
||||
await self.bot.say("Done. That felt good.")
|
||||
except discord.errors.Forbidden:
|
||||
await self.bot.say("I'm not allowed to do that.")
|
||||
@ -75,7 +74,8 @@ class Mod:
|
||||
return
|
||||
try:
|
||||
await self.bot.ban(user, days)
|
||||
logger.info("{}({}) banned {}({}), deleting {} days worth of messages".format(author.name, author.id, user.name, user.id, str(days)))
|
||||
logger.info("{}({}) banned {}({}), deleting {} days worth of messages".format(
|
||||
author.name, author.id, user.name, user.id, str(days)))
|
||||
await self.bot.say("Done. It was about time.")
|
||||
except discord.errors.Forbidden:
|
||||
await self.bot.say("I'm not allowed to do that.")
|
||||
@ -120,24 +120,25 @@ class Mod:
|
||||
author = ctx.message.author
|
||||
message = ctx.message
|
||||
cmdmsg = message
|
||||
logger.info("{}({}) deleted {} messages containing '{}' in channel {}".format(author.name, author.id, str(number), text, message.channel.name))
|
||||
logger.info("{}({}) deleted {} messages containing '{}' in channel {}".format(
|
||||
author.name, author.id, str(number), text, message.channel.name))
|
||||
try:
|
||||
if number > 0 and number < 10000:
|
||||
while True:
|
||||
new = False
|
||||
async for x in self.bot.logs_from(message.channel, limit=100, before=message):
|
||||
if number == 0:
|
||||
await self.bot.delete_message(cmdmsg)
|
||||
await self._delete_message(cmdmsg)
|
||||
await asyncio.sleep(0.25)
|
||||
return
|
||||
if text in x.content:
|
||||
await self.bot.delete_message(x)
|
||||
await self._delete_message(x)
|
||||
await asyncio.sleep(0.25)
|
||||
number -= 1
|
||||
new = True
|
||||
message = x
|
||||
if not new or number == 0:
|
||||
await self.bot.delete_message(cmdmsg)
|
||||
await self._delete_message(cmdmsg)
|
||||
await asyncio.sleep(0.25)
|
||||
break
|
||||
except discord.errors.Forbidden:
|
||||
@ -153,24 +154,25 @@ class Mod:
|
||||
author = ctx.message.author
|
||||
message = ctx.message
|
||||
cmdmsg = message
|
||||
logger.info("{}({}) deleted {} messages made by {}({}) in channel {}".format(author.name, author.id, str(number), user.name, user.id, message.channel.name))
|
||||
logger.info("{}({}) deleted {} messages made by {}({}) in channel {}".format(
|
||||
author.name, author.id, str(number), user.name, user.id, message.channel.name))
|
||||
try:
|
||||
if number > 0 and number < 10000:
|
||||
while True:
|
||||
new = False
|
||||
async for x in self.bot.logs_from(message.channel, limit=100, before=message):
|
||||
if number == 0:
|
||||
await self.bot.delete_message(cmdmsg)
|
||||
await self._delete_message(cmdmsg)
|
||||
await asyncio.sleep(0.25)
|
||||
return
|
||||
if x.author.id == user.id:
|
||||
await self.bot.delete_message(x)
|
||||
await self._delete_message(x)
|
||||
await asyncio.sleep(0.25)
|
||||
number -= 1
|
||||
new = True
|
||||
message = x
|
||||
if not new or number == 0:
|
||||
await self.bot.delete_message(cmdmsg)
|
||||
await self._delete_message(cmdmsg)
|
||||
await asyncio.sleep(0.25)
|
||||
break
|
||||
except discord.errors.Forbidden:
|
||||
@ -184,11 +186,12 @@ class Mod:
|
||||
cleanup messages 26"""
|
||||
author = ctx.message.author
|
||||
channel = ctx.message.channel
|
||||
logger.info("{}({}) deleted {} messages in channel {}".format(author.name, author.id, str(number), channel.name))
|
||||
logger.info("{}({}) deleted {} messages in channel {}".format(
|
||||
author.name, author.id, str(number), channel.name))
|
||||
try:
|
||||
if number > 0 and number < 10000:
|
||||
async for x in self.bot.logs_from(channel, limit=number + 1):
|
||||
await self.bot.delete_message(x)
|
||||
await self._delete_message(x)
|
||||
await asyncio.sleep(0.25)
|
||||
except discord.errors.Forbidden:
|
||||
await self.bot.say("I need permissions to manage messages in this channel.")
|
||||
@ -220,7 +223,6 @@ class Mod:
|
||||
else:
|
||||
await self.bot.say("User is not in blacklist.")
|
||||
|
||||
|
||||
@commands.group(pass_context=True)
|
||||
@checks.is_owner()
|
||||
async def whitelist(self, ctx):
|
||||
@ -281,7 +283,6 @@ class Mod:
|
||||
else:
|
||||
await self.bot.say("Channel already in ignore list.")
|
||||
|
||||
|
||||
@ignore.command(name="server", pass_context=True)
|
||||
async def ignore_server(self, ctx):
|
||||
"""Ignores current server"""
|
||||
@ -322,7 +323,6 @@ class Mod:
|
||||
else:
|
||||
await self.bot.say("That channel is not in the ignore list.")
|
||||
|
||||
|
||||
@unignore.command(name="server", pass_context=True)
|
||||
async def unignore_server(self, ctx):
|
||||
"""Removes current server from ignore list"""
|
||||
@ -432,7 +432,8 @@ class Mod:
|
||||
author = ctx.message.author
|
||||
try:
|
||||
await self.bot.edit_role(ctx.message.server, role, color=value)
|
||||
logger.info("{}({}) changed the colour of role '{}'".format(author.name, author.id, role.name))
|
||||
logger.info("{}({}) changed the colour of role '{}'".format(
|
||||
author.name, author.id, role.name))
|
||||
await self.bot.say("Done.")
|
||||
except discord.Forbidden:
|
||||
await self.bot.say("I need permissions to manage roles first.")
|
||||
@ -454,7 +455,8 @@ class Mod:
|
||||
author = ctx.message.author
|
||||
old_name = role.name # probably not necessary?
|
||||
await self.bot.edit_role(ctx.message.server, role, name=name)
|
||||
logger.info("{}({}) changed the name of role '{}' to '{}'".format(author.name, author.id, old_name, name))
|
||||
logger.info("{}({}) changed the name of role '{}' to '{}'".format(
|
||||
author.name, author.id, old_name, name))
|
||||
await self.bot.say("Done.")
|
||||
except discord.Forbidden:
|
||||
await self.bot.say("I need permissions to manage roles first.")
|
||||
@ -476,6 +478,14 @@ class Mod:
|
||||
else:
|
||||
await self.bot.say("That user doesn't have any recorded name change.")
|
||||
|
||||
async def _delete_message(self, message):
|
||||
try:
|
||||
await self.bot.delete_message(message)
|
||||
except discord.errors.NotFound:
|
||||
pass
|
||||
except:
|
||||
raise
|
||||
|
||||
def immune_from_filter(self, message):
|
||||
user = message.author
|
||||
server = message.server
|
||||
@ -497,18 +507,22 @@ class Mod:
|
||||
server = message.server
|
||||
can_delete = message.channel.permissions_for(server.me).manage_messages
|
||||
|
||||
if message.author.id == self.bot.user.id or self.immune_from_filter(message) or not can_delete: # Owner, admins and mods are immune to the filter
|
||||
# Owner, admins and mods are immune to the filter
|
||||
if message.author.id == self.bot.user.id or self.immune_from_filter(message) or not can_delete:
|
||||
return
|
||||
|
||||
if server.id in self.filter.keys():
|
||||
for w in self.filter[server.id]:
|
||||
if w in message.content.lower():
|
||||
try: # Something else in discord.py is throwing a 404 error after deletion
|
||||
await self.bot.delete_message(message)
|
||||
# Something else in discord.py is throwing a 404 error
|
||||
# after deletion
|
||||
try:
|
||||
await self._delete_message(message)
|
||||
except:
|
||||
pass
|
||||
print("Message deleted. Filtered: " + w)
|
||||
|
||||
|
||||
async def check_names(self, before, after):
|
||||
if before.name != after.name:
|
||||
if before.id not in self.past_names.keys():
|
||||
@ -525,6 +539,7 @@ def check_folders():
|
||||
print("Creating " + folder + " folder...")
|
||||
os.makedirs(folder)
|
||||
|
||||
|
||||
def check_files():
|
||||
ignore_list = {"SERVERS": [], "CHANNELS": []}
|
||||
|
||||
@ -548,15 +563,20 @@ def check_files():
|
||||
print("Creating empty past_names.json...")
|
||||
fileIO("data/mod/past_names.json", "save", {})
|
||||
|
||||
|
||||
|
||||
def setup(bot):
|
||||
global logger
|
||||
check_folders()
|
||||
check_files()
|
||||
logger = logging.getLogger("mod")
|
||||
if logger.level == 0: # Prevents the logger from being loaded again in case of module reload
|
||||
# Prevents the logger from being loaded again in case of module reload
|
||||
if logger.level == 0:
|
||||
logger.setLevel(logging.INFO)
|
||||
handler = logging.FileHandler(filename='data/mod/mod.log', encoding='utf-8', mode='a')
|
||||
handler.setFormatter(logging.Formatter('%(asctime)s %(message)s', datefmt="[%d/%m/%Y %H:%M]"))
|
||||
handler = logging.FileHandler(
|
||||
filename='data/mod/mod.log', encoding='utf-8', mode='a')
|
||||
handler.setFormatter(
|
||||
logging.Formatter('%(asctime)s %(message)s', datefmt="[%d/%m/%Y %H:%M]"))
|
||||
logger.addHandler(handler)
|
||||
n = Mod(bot)
|
||||
bot.add_listener(n.check_filter, "on_message")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user