mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-12-08 18:32:32 -05:00
Implemented logging, expanded economy
Mod commands are now logged into data/mod/mod.log Economy events are logged into data/economy/economy.log Added !bank set to set credits (admin/owner) Added !bank transfer to transfer credits between bank accounts Modified !bank balance, it can now show the balance of other users too
This commit is contained in:
29
cogs/mod.py
29
cogs/mod.py
@@ -4,6 +4,7 @@ from .utils import checks
|
||||
from .utils.dataIO import fileIO
|
||||
from __main__ import send_cmd_help
|
||||
import os
|
||||
import logging
|
||||
|
||||
class Mod:
|
||||
"""Moderation tools."""
|
||||
@@ -15,29 +16,33 @@ class Mod:
|
||||
self.ignore_list = fileIO("data/mod/ignorelist.json", "load")
|
||||
self.filter = fileIO("data/mod/filter.json", "load")
|
||||
|
||||
@commands.command(no_pm=True)
|
||||
@commands.command(no_pm=True, pass_context=True)
|
||||
@checks.admin_or_permissions(kick_members=True)
|
||||
async def kick(self, user : discord.Member):
|
||||
async def kick(self, ctx, user : discord.Member):
|
||||
"""Kicks user."""
|
||||
author = ctx.message.author
|
||||
try:
|
||||
await self.bot.kick(user)
|
||||
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.")
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
@commands.command(no_pm=True)
|
||||
@commands.command(no_pm=True, pass_context=True)
|
||||
@checks.admin_or_permissions(ban_members=True)
|
||||
async def ban(self, user : discord.Member, purge_msg : int=0):
|
||||
async def ban(self, ctx, user : discord.Member, purge_msg : int=0):
|
||||
"""Bans user and deletes last X days worth of messages.
|
||||
|
||||
Minimum 0 days, maximum 7. Defaults to 0."""
|
||||
author = ctx.message.author
|
||||
if purge_msg < 0 or purge_msg > 7:
|
||||
await self.bot.say("Invalid days. Must be between 0 and 7.")
|
||||
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(purge_msg)))
|
||||
await self.bot.say("Done. It was about time.")
|
||||
except discord.errors.Forbidden:
|
||||
await self.bot.say("I'm not allowed to do that.")
|
||||
@@ -63,8 +68,10 @@ class Mod:
|
||||
cleanup text \"test\" 5
|
||||
|
||||
Remember to use double quotes."""
|
||||
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))
|
||||
if number > 0 and number < 10000:
|
||||
while True:
|
||||
new = False
|
||||
@@ -82,14 +89,16 @@ class Mod:
|
||||
break
|
||||
|
||||
@cleanup.command(pass_context=True, no_pm=True)
|
||||
async def user(self, ctx, name : discord.Member, number : int):
|
||||
async def user(self, ctx, user : discord.Member, number : int):
|
||||
"""Deletes last X messages from specified user.
|
||||
|
||||
Examples:
|
||||
cleanup user @\u200bTwentysix 2
|
||||
cleanup user Red 6"""
|
||||
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))
|
||||
if number > 0 and number < 10000:
|
||||
while True:
|
||||
new = False
|
||||
@@ -97,7 +106,7 @@ class Mod:
|
||||
if number == 0:
|
||||
await self.bot.delete_message(cmdmsg)
|
||||
return
|
||||
if x.author.id == name.id:
|
||||
if x.author.id == user.id:
|
||||
await self.bot.delete_message(x)
|
||||
number -= 1
|
||||
new = True
|
||||
@@ -112,7 +121,9 @@ class Mod:
|
||||
|
||||
Example:
|
||||
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))
|
||||
if number > 0 and number < 10000:
|
||||
async for x in self.bot.logs_from(channel, limit=number+1):
|
||||
await self.bot.delete_message(x)
|
||||
@@ -391,8 +402,14 @@ def check_files():
|
||||
fileIO("data/mod/filter.json", "save", {})
|
||||
|
||||
def setup(bot):
|
||||
global logger
|
||||
check_folders()
|
||||
check_files()
|
||||
logger = logging.getLogger("mod")
|
||||
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]"))
|
||||
logger.addHandler(handler)
|
||||
n = Mod(bot)
|
||||
bot.add_listener(n.check_filter, "on_message")
|
||||
bot.add_cog(n)
|
||||
|
||||
Reference in New Issue
Block a user