mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-07 03:38:53 -05:00
Record users' nickname history
20 names and 20 nicknames maximum
This commit is contained in:
parent
f1bd9da184
commit
8b52bd56af
77
cogs/mod.py
77
cogs/mod.py
@ -1,8 +1,10 @@
|
|||||||
import discord
|
import discord
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from .utils.dataIO import fileIO
|
from .utils.dataIO import fileIO, dataIO
|
||||||
from .utils import checks
|
from .utils import checks
|
||||||
from __main__ import send_cmd_help, settings
|
from __main__ import send_cmd_help, settings
|
||||||
|
from collections import deque
|
||||||
|
from cogs.utils.chat_formatting import escape_mass_mentions
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
import asyncio
|
import asyncio
|
||||||
@ -13,11 +15,12 @@ class Mod:
|
|||||||
|
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
self.whitelist_list = fileIO("data/mod/whitelist.json", "load")
|
self.whitelist_list = dataIO.load_json("data/mod/whitelist.json")
|
||||||
self.blacklist_list = fileIO("data/mod/blacklist.json", "load")
|
self.blacklist_list = dataIO.load_json("data/mod/blacklist.json")
|
||||||
self.ignore_list = fileIO("data/mod/ignorelist.json", "load")
|
self.ignore_list = dataIO.load_json("data/mod/ignorelist.json")
|
||||||
self.filter = fileIO("data/mod/filter.json", "load")
|
self.filter = dataIO.load_json("data/mod/filter.json")
|
||||||
self.past_names = fileIO("data/mod/past_names.json", "load")
|
self.past_names = dataIO.load_json("data/mod/past_names.json")
|
||||||
|
self.past_nicknames = dataIO.load_json("data/mod/past_nicknames.json")
|
||||||
|
|
||||||
@commands.group(pass_context=True, no_pm=True)
|
@commands.group(pass_context=True, no_pm=True)
|
||||||
@checks.serverowner_or_permissions(administrator=True)
|
@checks.serverowner_or_permissions(administrator=True)
|
||||||
@ -590,17 +593,29 @@ class Mod:
|
|||||||
|
|
||||||
@commands.command()
|
@commands.command()
|
||||||
async def names(self, user : discord.Member):
|
async def names(self, user : discord.Member):
|
||||||
"""Show previous names of a user"""
|
"""Show previous names/nicknames of a user"""
|
||||||
exclude = ("@everyone", "@here")
|
server = user.server
|
||||||
if user.id in self.past_names.keys():
|
names = self.past_names[user.id] if user.id in self.past_names else None
|
||||||
names = ""
|
try:
|
||||||
for name in self.past_names[user.id]:
|
nicks = self.past_nicknames[server.id][user.id]
|
||||||
if not any(mnt in name.lower() for mnt in exclude):
|
nicks = [escape_mass_mentions(nick) for nick in nicks]
|
||||||
names += " {}".format(name)
|
except:
|
||||||
names = "```{}```".format(names)
|
nicks = None
|
||||||
await self.bot.say("Past names:\n{}".format(names))
|
msg = ""
|
||||||
|
if names:
|
||||||
|
names = [escape_mass_mentions(name) for name in names]
|
||||||
|
msg += "**Past 20 names**:\n"
|
||||||
|
msg += ", ".join(names)
|
||||||
|
if nicks:
|
||||||
|
if msg:
|
||||||
|
msg += "\n\n"
|
||||||
|
msg += "**Past 20 nicknames**:\n"
|
||||||
|
msg += ", ".join(nicks)
|
||||||
|
if msg:
|
||||||
|
await self.bot.say(msg)
|
||||||
else:
|
else:
|
||||||
await self.bot.say("That user doesn't have any recorded name change.")
|
await self.bot.say("That user doesn't have any recorded name or "
|
||||||
|
"nickname change.")
|
||||||
|
|
||||||
def discordpy_updated(self):
|
def discordpy_updated(self):
|
||||||
try:
|
try:
|
||||||
@ -653,15 +668,31 @@ class Mod:
|
|||||||
pass
|
pass
|
||||||
print("Message deleted. Filtered: " + w)
|
print("Message deleted. Filtered: " + w)
|
||||||
|
|
||||||
|
|
||||||
async def check_names(self, before, after):
|
async def check_names(self, before, after):
|
||||||
if before.name != after.name:
|
if before.name != after.name:
|
||||||
if before.id not in self.past_names.keys():
|
if before.id not in self.past_names.keys():
|
||||||
self.past_names[before.id] = [before.name]
|
self.past_names[before.id] = [after.name]
|
||||||
else:
|
else:
|
||||||
if before.name not in self.past_names[before.id]:
|
if after.name not in self.past_names[before.id]:
|
||||||
self.past_names[before.id].append(before.name)
|
names = deque(self.past_names[before.id], maxlen=20)
|
||||||
fileIO("data/mod/past_names.json", "save", self.past_names)
|
names.append(after.name)
|
||||||
|
self.past_names[before.id] = list(names)
|
||||||
|
dataIO.save_json("data/mod/past_names.json", self.past_names)
|
||||||
|
|
||||||
|
if before.nick != after.nick and after.nick is not None:
|
||||||
|
server = before.server
|
||||||
|
if not server.id in self.past_nicknames:
|
||||||
|
self.past_nicknames[server.id] = {}
|
||||||
|
if before.id in self.past_nicknames[server.id]:
|
||||||
|
nicks = deque(self.past_nicknames[server.id][before.id],
|
||||||
|
maxlen=20)
|
||||||
|
else:
|
||||||
|
nicks = []
|
||||||
|
if after.nick not in nicks:
|
||||||
|
nicks.append(after.nick)
|
||||||
|
self.past_nicknames[server.id][before.id] = list(nicks)
|
||||||
|
dataIO.save_json("data/mod/past_nicknames.json",
|
||||||
|
self.past_nicknames)
|
||||||
|
|
||||||
def check_folders():
|
def check_folders():
|
||||||
folders = ("data", "data/mod/")
|
folders = ("data", "data/mod/")
|
||||||
@ -694,6 +725,10 @@ def check_files():
|
|||||||
print("Creating empty past_names.json...")
|
print("Creating empty past_names.json...")
|
||||||
fileIO("data/mod/past_names.json", "save", {})
|
fileIO("data/mod/past_names.json", "save", {})
|
||||||
|
|
||||||
|
if not os.path.isfile("data/mod/past_nicknames.json"):
|
||||||
|
print("Creating empty past_nicknames.json...")
|
||||||
|
fileIO("data/mod/past_nicknames.json", "save", {})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def setup(bot):
|
def setup(bot):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user