Add `red_delete_data_for_user`

pull/112/head
bobloy 5 years ago
parent ea71aafb52
commit 36dc74cfb1

@ -38,6 +38,10 @@ class AnnounceDaily(Cog):
self.config.register_global(**default_global) self.config.register_global(**default_global)
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
async def _get_msgs(self): async def _get_msgs(self):
return DEFAULT_MESSAGES + await self.config.messages() return DEFAULT_MESSAGES + await self.config.messages()

@ -22,6 +22,10 @@ class CCRole(commands.Cog):
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.guild_only() @commands.guild_only()
@commands.group() @commands.group()
async def ccrole(self, ctx: commands.Context): async def ccrole(self, ctx: commands.Context):

@ -2,6 +2,7 @@ import asyncio
import os import os
import pathlib import pathlib
from datetime import datetime, timedelta from datetime import datetime, timedelta
from typing import Literal
import discord import discord
from chatterbot import ChatBot from chatterbot import ChatBot
@ -11,6 +12,7 @@ from chatterbot.trainers import ChatterBotCorpusTrainer, ListTrainer
from redbot.core import Config, commands from redbot.core import Config, commands
from redbot.core.commands import Cog from redbot.core.commands import Cog
from redbot.core.data_manager import cog_data_path from redbot.core.data_manager import cog_data_path
from redbot.core.utils import AsyncIter
class ENG_LG: # TODO: Add option to use this large model class ENG_LG: # TODO: Add option to use this large model
@ -49,8 +51,12 @@ class Chatter(Cog):
self.loop = asyncio.get_event_loop() self.loop = asyncio.get_event_loop()
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
def _create_chatbot( def _create_chatbot(
self, data_path, similarity_algorithm, similarity_threshold, tagger_language self, data_path, similarity_algorithm, similarity_threshold, tagger_language
): ):
return ChatBot( return ChatBot(
"ChatterBot", "ChatterBot",
@ -99,7 +105,7 @@ class Chatter(Cog):
try: try:
async for message in channel.history( async for message in channel.history(
limit=None, after=after, oldest_first=True limit=None, after=after, oldest_first=True
).filter( ).filter(
predicate=predicate predicate=predicate
): # type: discord.Message ): # type: discord.Message
@ -182,7 +188,9 @@ class Chatter(Cog):
try: try:
os.remove(self.data_path) os.remove(self.data_path)
except PermissionError: except PermissionError:
await ctx.maybe_send_embed("Failed to clear training database. Please wait a bit and try again") await ctx.maybe_send_embed(
"Failed to clear training database. Please wait a bit and try again"
)
self._create_chatbot(self.data_path, SpacySimilarity, 0.45, ENG_MD) self._create_chatbot(self.data_path, SpacySimilarity, 0.45, ENG_MD)

@ -28,6 +28,10 @@ class CogLint(Cog):
self.config.register_global(**default_global) self.config.register_global(**default_global)
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.command() @commands.command()
async def autolint(self, ctx: commands.Context): async def autolint(self, ctx: commands.Context):
"""Toggles automatically linting code""" """Toggles automatically linting code"""

@ -32,6 +32,10 @@ class Dad(Cog):
self.cooldown = defaultdict(datetime.now) self.cooldown = defaultdict(datetime.now)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.command() @commands.command()
async def dadjoke(self, ctx: commands.Context): async def dadjoke(self, ctx: commands.Context):
headers = { headers = {

@ -18,6 +18,10 @@ class ExclusiveRole(Cog):
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.guild_only() @commands.guild_only()
@commands.group(aliases=["exclusiverole"]) @commands.group(aliases=["exclusiverole"])
async def exclusive(self, ctx): async def exclusive(self, ctx):

@ -1,9 +1,11 @@
from datetime import date, timedelta from datetime import date, timedelta
from typing import Literal
import discord import discord
from redbot.core import Config, checks, commands from redbot.core import Config, checks, commands
from redbot.core.bot import Red from redbot.core.bot import Red
from redbot.core.commands import Cog from redbot.core.commands import Cog
from redbot.core.utils import AsyncIter
from redbot.core.utils.chat_formatting import pagify from redbot.core.utils.chat_formatting import pagify
@ -22,6 +24,21 @@ class Flag(Cog):
self.config.register_global(**default_global) self.config.register_global(**default_global)
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
async def red_delete_data_for_user(
self,
*,
requester: Literal["discord_deleted_user", "owner", "user", "user_strict"],
user_id: int,
):
if requester not in ["discord_deleted_user", "owner"]:
return
all_members = await self.config.all_members()
async for guild_id, guild_data in AsyncIter(all_members.items(), steps=100):
if user_id in guild_data:
await self.config.member_from_ids(guild_id, user_id).clear()
@checks.is_owner() @checks.is_owner()
@commands.guild_only() @commands.guild_only()
@commands.command() @commands.command()

@ -21,6 +21,10 @@ class ForceMention(Cog):
self.config.register_global(**default_global) self.config.register_global(**default_global)
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@checks.admin_or_permissions(manage_roles=True) @checks.admin_or_permissions(manage_roles=True)
@commands.command() @commands.command()
async def forcemention(self, ctx: commands.Context, role: str, *, message=""): async def forcemention(self, ctx: commands.Context, role: str, *, message=""):

@ -14,6 +14,7 @@ class Hangman(Cog):
letters = "🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿" letters = "🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿"
def __init__(self, bot): def __init__(self, bot):
super().__init__()
self.bot = bot self.bot = bot
self.config = Config.get_conf(self, identifier=1049711010310997110) self.config = Config.get_conf(self, identifier=1049711010310997110)
default_guild = {"theface": ":thinking:", "emojis": True} default_guild = {"theface": ":thinking:", "emojis": True}
@ -39,6 +40,10 @@ class Hangman(Cog):
self.hanglist = {} self.hanglist = {}
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
async def _update_hanglist(self): async def _update_hanglist(self):
for guild in self.bot.guilds: for guild in self.bot.guilds:
theface = await self.config.guild(guild).theface() theface = await self.config.guild(guild).theface()

@ -41,6 +41,10 @@ class InfoChannel(Cog):
self._critical_section_wooah_ = 0 self._critical_section_wooah_ = 0
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.command() @commands.command()
@checks.admin() @checks.admin()
async def infochannel(self, ctx: commands.Context): async def infochannel(self, ctx: commands.Context):

@ -10,12 +10,17 @@ class Leaver(Cog):
""" """
def __init__(self, bot: Red): def __init__(self, bot: Red):
super().__init__()
self.bot = bot self.bot = bot
self.config = Config.get_conf(self, identifier=9811198108111121, force_registration=True) self.config = Config.get_conf(self, identifier=9811198108111121, force_registration=True)
default_guild = {"channel": ""} default_guild = {"channel": ""}
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.group(aliases=["setleaver"]) @commands.group(aliases=["setleaver"])
@checks.mod_or_permissions(administrator=True) @checks.mod_or_permissions(administrator=True)
async def leaverset(self, ctx): async def leaverset(self, ctx):

@ -9,8 +9,13 @@ class LoveCalculator(Cog):
"""Calculate the love percentage for two users!""" """Calculate the love percentage for two users!"""
def __init__(self, bot): def __init__(self, bot):
super().__init__()
self.bot = bot self.bot = bot
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.command(aliases=["lovecalc"]) @commands.command(aliases=["lovecalc"])
async def lovecalculator( async def lovecalculator(
self, ctx: commands.Context, lover: discord.Member, loved: discord.Member self, ctx: commands.Context, lover: discord.Member, loved: discord.Member

@ -1,10 +1,12 @@
from datetime import datetime from datetime import datetime
from typing import Literal
import dateutil.parser import dateutil.parser
import discord import discord
from redbot.core import Config, commands from redbot.core import Config, commands
from redbot.core.bot import Red from redbot.core.bot import Red
from redbot.core.commands import Cog from redbot.core.commands import Cog
from redbot.core.utils import AsyncIter
class LastSeen(Cog): class LastSeen(Cog):
@ -28,6 +30,19 @@ class LastSeen(Cog):
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
self.config.register_member(**default_member) self.config.register_member(**default_member)
async def red_delete_data_for_user(
self,
*,
requester: Literal["discord_deleted_user", "owner", "user", "user_strict"],
user_id: int,
):
all_members = await self.config.all_members()
async for guild_id, guild_data in AsyncIter(all_members.items(), steps=100):
if user_id in guild_data:
await self.config.member_from_ids(guild_id, user_id).clear()
@staticmethod @staticmethod
def get_date_time(s): def get_date_time(s):
d = dateutil.parser.parse(s) d = dateutil.parser.parse(s)

@ -5,18 +5,19 @@ import datetime
import json import json
import time import time
from random import choice from random import choice
from typing import Literal
import discord import discord
from redbot.core import Config, bank, commands from redbot.core import Config, bank, commands
from redbot.core.bot import Red from redbot.core.bot import Red
from redbot.core.data_manager import bundled_data_path from redbot.core.data_manager import bundled_data_path
from redbot.core.utils import AsyncIter
class Gardener(commands.Cog): class Gardener:
"""Gardener class""" """Gardener class"""
def __init__(self, user: discord.User, config: Config): def __init__(self, user: discord.User, config: Config):
super().__init__()
self.user = user self.user = user
self.config = config self.config = config
self.badges = [] self.badges = []
@ -180,7 +181,17 @@ class PlantTycoon(commands.Cog):
# self.bank = bot.get_cog('Economy').bank # self.bank = bot.get_cog('Economy').bank
async def red_delete_data_for_user(
self,
*,
requester: Literal["discord_deleted_user", "owner", "user", "user_strict"],
user_id: int,
):
await self.config.user_from_id(user_id).clear()
async def _load_plants_products(self): async def _load_plants_products(self):
"""Runs in __init__.py before cog is added to the bot"""
plant_path = bundled_data_path(self) / "plants.json" plant_path = bundled_data_path(self) / "plants.json"
product_path = bundled_data_path(self) / "products.json" product_path = bundled_data_path(self) / "products.json"
with plant_path.open() as json_data: with plant_path.open() as json_data:

@ -25,6 +25,10 @@ class QRInvite(Cog):
self.config.register_global(**default_global) self.config.register_global(**default_global)
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.command() @commands.command()
async def qrinvite( async def qrinvite(
self, self,

@ -35,6 +35,10 @@ class ReactRestrict(Cog):
) )
self.config.register_global(registered_combos=[]) self.config.register_global(registered_combos=[])
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
async def combo_list(self) -> List[ReactRestrictCombo]: async def combo_list(self) -> List[ReactRestrictCombo]:
""" """
Returns a list of reactrestrict combos. Returns a list of reactrestrict combos.

@ -15,6 +15,10 @@ class RecyclingPlant(Cog):
self.bot = bot self.bot = bot
self.junk = None self.junk = None
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
def load_junk(self): def load_junk(self):
junk_path = bundled_data_path(self) / "junk.json" junk_path = bundled_data_path(self) / "junk.json"
with junk_path.open() as json_data: with junk_path.open() as json_data:

@ -21,6 +21,10 @@ class RPSLS(Cog):
super().__init__() super().__init__()
self.bot = bot self.bot = bot
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.command() @commands.command()
async def rpsls(self, ctx: commands.Context, choice: str): async def rpsls(self, ctx: commands.Context, choice: str):
""" """

@ -27,6 +27,10 @@ class SayUrl(Cog):
self.config.register_global(**default_global) self.config.register_global(**default_global)
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.command() @commands.command()
async def sayurl(self, ctx: commands.Context, url): async def sayurl(self, ctx: commands.Context, url):
""" """

@ -11,6 +11,10 @@ class SCP(Cog):
super().__init__() super().__init__()
self.bot = bot self.bot = bot
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.command() @commands.command()
async def scp(self, ctx: commands.Context, num: int): async def scp(self, ctx: commands.Context, num: int):
"""Look up SCP articles. """Look up SCP articles.

@ -48,6 +48,10 @@ class StealEmoji(Cog):
self.is_on = None self.is_on = None
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.group() @commands.group()
async def stealemoji(self, ctx: commands.Context): async def stealemoji(self, ctx: commands.Context):
""" """

@ -22,6 +22,10 @@ class Timerole(Cog):
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
self.updating = self.bot.loop.create_task(self.check_day()) self.updating = self.bot.loop.create_task(self.check_day())
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
def cog_unload(self): def cog_unload(self):
self.updating.cancel() self.updating.cancel()

@ -23,6 +23,10 @@ class TTS(Cog):
self.config.register_global(**default_global) self.config.register_global(**default_global)
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.command(aliases=["t2s", "text2"]) @commands.command(aliases=["t2s", "text2"])
async def tts(self, ctx: commands.Context, *, text: str): async def tts(self, ctx: commands.Context, *, text: str):
""" """

@ -12,6 +12,10 @@ class Unicode(Cog):
super().__init__() super().__init__()
self.bot = bot self.bot = bot
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.group(name="unicode", pass_context=True) @commands.group(name="unicode", pass_context=True)
async def unicode(self, ctx): async def unicode(self, ctx):
"""Encode/Decode a Unicode character.""" """Encode/Decode a Unicode character."""

@ -20,6 +20,7 @@ class Werewolf(Cog):
""" """
def __init__(self, bot: Red): def __init__(self, bot: Red):
super().__init__()
self.bot = bot self.bot = bot
self.config = Config.get_conf( self.config = Config.get_conf(
self, identifier=87101114101119111108102, force_registration=True self, identifier=87101114101119111108102, force_registration=True
@ -37,6 +38,10 @@ class Werewolf(Cog):
self.games = {} # Active games stored here, id is per guild self.games = {} # Active games stored here, id is per guild
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
def __unload(self): def __unload(self):
print("Unload called") print("Unload called")
for game in self.games.values(): for game in self.games.values():

Loading…
Cancel
Save