Merge pull request #112 from bobloy/3.4_compatibility

3.4 compatibility
pull/122/head
bobloy 4 years ago committed by GitHub
commit 7507141ec4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Send daily announcements to all servers at a specified times",
"hidden": false,
"install_msg": "Thank you for installing AnnounceDaily! Get started with `[p]load announcedaily` and `[p]help AnnounceDaily`",
"short": "Send daily announcements",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy"
]

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Start an Audio Trivia game",
"hidden": false,
"install_msg": "Thank you for installing Audio trivia!\n You **MUST** unload trivia to use this (`[p]unload trivia`)\n Then you can get started with `[p]load audiotrivia` and `[p]help AudioTrivia`",
"short": "Start an Audio Trivia game",
"end_user_data_statement": "This cog expands the core Audio and Trivia cogs without collecting any additional End User Data.\nSee the core End User Data storage for more information",
"tags": [
"fox",
"bobloy",

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

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Creates custom commands to adjust roles and send custom messages",
"hidden": false,
"install_msg": "Thank you for installing Custom Commands w/ Roles. Get started with `[p]load ccrole` and `[p]help CCRole`",
"short": "Creates commands that adjust roles",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"fox",
"bobloy",

@ -3,6 +3,7 @@ import logging
import os
import pathlib
from datetime import datetime, timedelta
from typing import Literal
import discord
from chatterbot import ChatBot
@ -13,6 +14,7 @@ from redbot.core import Config, commands
from redbot.core.commands import Cog
from redbot.core.data_manager import cog_data_path
from redbot.core.utils.predicates import MessagePredicate
from redbot.core.utils import AsyncIter
log = logging.getLogger("red.fox_v3.chat")
@ -65,6 +67,10 @@ class Chatter(Cog):
self.loop = asyncio.get_event_loop()
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
def _create_chatbot(self):
return ChatBot(

@ -2,11 +2,7 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
3,
10
],
"min_bot_version": "3.3.10",
"description": "Create an offline chatbot that talks like your average member using Machine Learning",
"hidden": false,
"install_msg": "Thank you for installing Chatter! Get started ith `[p]load chatter` and `[p]help Chatter`",
@ -24,6 +20,7 @@
"spacy>=2.3,<2.4"
],
"short": "Local Chatbot run on machine learning",
"end_user_data_statement": "This cog only stores anonymous conversations data; no End User Data is stored.",
"tags": [
"chat",
"chatbot",

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

@ -2,16 +2,15 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Lint python code posted in chat",
"hidden": true,
"install_msg": "Thank you for installing CogLint! Get started with `[p]load coglint` and `[p]help CogLint`",
"requirements": ["pylint"],
"requirements": [
"pylint"
],
"short": "Python cog linter",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"utils",

@ -2,11 +2,7 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
4,
0
],
"min_bot_version": "3.4.0",
"description": "Handle war games by filling in specified territories with colors",
"hidden": false,
"install_msg": "Thank you for installing Conquest. Get started with `[p]load conquest`, then `[p]help Conquest`",

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

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Tell dad jokes and give out bad nicknames",
"hidden": false,
"install_msg": "Thank you for installing Dad. Get started with `[p]load dad`, then `[p]help Dad`",
"short": "Dad joke bot",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"utils",

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

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Assign roles to be exclusive, preventing other roles from being added",
"hidden": false,
"install_msg": "Thank you for installing ExclusiveRole. Get started with `[p]load exclusiverole` and `[p]help ExclusiveRole`",
"short": "Set roles to be exclusive",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"fox",
"bobloy",

@ -1,9 +1,11 @@
from datetime import date, timedelta
from typing import Literal
import discord
from redbot.core import Config, checks, commands
from redbot.core.bot import Red
from redbot.core.commands import Cog
from redbot.core.utils import AsyncIter
from redbot.core.utils.chat_formatting import pagify
@ -22,6 +24,21 @@ class Flag(Cog):
self.config.register_global(**default_global)
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_guilds = await self.config.all_guilds()
async for guild_id, guild_data in AsyncIter(all_guilds.items(), steps=100):
if user_id in guild_data["flags"]:
await self.config.guild_from_id(guild_id).flags.clear_raw(user_id)
@checks.is_owner()
@commands.guild_only()
@commands.command()

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Add expiring flags on members to track warnings or incidents",
"hidden": false,
"install_msg": "Thank you for installing Flag! Get started with `[p]load flag` and `[p]help Flag`",
"short": "Add expiring flags to members",
"end_user_data_statement": "This cog stores user IDs listed along with a provided explanation for being flagged",
"tags": [
"bobloy",
"warning",

@ -21,6 +21,10 @@ class ForceMention(Cog):
self.config.register_global(**default_global)
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)
@commands.command()
async def forcemention(self, ctx: commands.Context, role: str, *, message=""):

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Mentions roles that are unmentionable",
"hidden": false,
"install_msg": "Thank you for installing ForceMention! Get started with `[p]load forcemention`, then `[p]forcemention`",
"short": "Mention unmentionables",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"utils"

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

@ -2,16 +2,13 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Play Hangman with your friends",
"hidden": false,
"install_msg": "Thank you for installing Hangman! Get started with `[p]load hangman`, then `[p]help Hangman`",
"requirements": [],
"short": "Play Hangman",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"game",
"fun",

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Create a channel with updating server info",
"hidden": false,
"install_msg": "Thank you for installing InfoChannel. Get started with `[p]load infochannel`, then `[p]help InfoChannel`",
"short": "Updating server info channel",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"utils"

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

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Keeps track of when people leave the server, and posts a message notifying",
"hidden": false,
"install_msg": "Thank you for installing Leaver. Get started with `[p]load leaver`, then `[p]help Leaver`",
"short": "Send message on leave",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"utils",

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

@ -3,11 +3,7 @@
"Bobloy",
"SnappyDragon"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Calculate the love percentage for two users",
"hidden": false,
"install_msg": "Thank you for installing LoveCalculator. Love is in the air.\n Get started with `[p]load lovecalculator`, then `[p]help LoveCalculator`",
@ -15,6 +11,7 @@
"beautifulsoup4"
],
"short": "Calculate love percentage",
"end_user_data_statement": "This cog uses the core Bank cog. It store no End User Data otherwise.",
"tags": [
"bobloy",
"fun",

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

@ -2,16 +2,15 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Keep track of when users were last seen online",
"hidden": false,
"install_msg": "Thank you for installing LastSeen. Get started with `[p]load lseen`, then `[p]help LastSeen`",
"requirements": ["python-dateutil"],
"requirements": [
"python-dateutil"
],
"short": "Last seen tracker",
"end_user_data_statement": "This cog stores user IDs along with a time they were last online per guild",
"tags": [
"bobloy",
"utils",

@ -1,10 +1,12 @@
from datetime import datetime
from typing import Literal
import dateutil.parser
import discord
from redbot.core import Config, commands
from redbot.core.bot import Red
from redbot.core.commands import Cog
from redbot.core.utils import AsyncIter
class LastSeen(Cog):
@ -28,6 +30,19 @@ class LastSeen(Cog):
self.config.register_guild(**default_guild)
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
def get_date_time(s):
d = dateutil.parser.parse(s)

@ -2,11 +2,7 @@
"author": [
"Bobloy"
],
"min_bot_version": [
3,
3,
11
],
"min_bot_version": "3.3.11",
"description": "Monitor images for NSFW content and moves them to a nsfw channel if possible",
"hidden": false,
"install_msg": "Thank you for installing Nudity. Get started with `[p]load nudity`, then `[p]help Nudity`",

@ -4,16 +4,13 @@
"SnappyDragon",
"PaddoInWonderland"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Grow your own plants! Be sure to take care of it. Do `[p]gardening` to get started",
"hidden": false,
"install_msg": "Thank you for installing PlantTycoon. Check out all the commands with `[p]help PlantTycoon`",
"requirements": [],
"short": "Grow your own plants! Do `[p]gardening` to get started.",
"end_user_data_statement": "This cog stores user IDs along with their progress in the PlantTycoon game",
"tags": [
"bobloy",
"games",

@ -5,18 +5,19 @@ import datetime
import json
import time
from random import choice
from typing import Literal
import discord
from redbot.core import Config, bank, commands
from redbot.core.bot import Red
from redbot.core.data_manager import bundled_data_path
from redbot.core.utils import AsyncIter
class Gardener(commands.Cog):
class Gardener:
"""Gardener class"""
def __init__(self, user: discord.User, config: Config):
super().__init__()
self.user = user
self.config = config
self.badges = []
@ -180,7 +181,17 @@ class PlantTycoon(commands.Cog):
# 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):
"""Runs in __init__.py before cog is added to the bot"""
plant_path = bundled_data_path(self) / "plants.json"
product_path = bundled_data_path(self) / "products.json"
with plant_path.open() as json_data:

@ -2,11 +2,7 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Create a QR code invite for the server",
"hidden": false,
"install_msg": "Thank you for installing QRInvite! Get started with `[p]load qrinvite`, then `[p]help QRInvite`",
@ -14,6 +10,7 @@
"MyQR"
],
"short": "Create a QR code invite",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"tools",

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

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Cog to prevent reactions on specific messages from certain users",
"hidden": false,
"install_msg": "Thank you for installing ReactRestrict.",
"short": "Prevent reactions to messages",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"react",
"reaction",

@ -35,6 +35,10 @@ class ReactRestrict(Cog):
)
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]:
"""
Returns a list of reactrestrict combos.

@ -3,15 +3,12 @@
"Bobloy",
"SnappyDragon"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Apply for a job at the recycling plant! Sort out the garbage!",
"hidden": false,
"install_msg": "Thank you for installing RecyclingPlant. Start recycling today with `[p]load recyclingplant`, then `[p]recyclingplant`",
"short": "Apply for a job at the recycling plant!",
"end_user_data_statement": "This cog used the core",
"tags": [
"bobloy",
"environment",

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

@ -3,16 +3,13 @@
"Bobloy",
"SnappyDragon"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Play Rock Papers Scissor Lizard Spock by Sam Kass in Discord!",
"hidden": false,
"install_msg": "Thank you for installing RPSLS. Get started with `[p]load rpsls`, then `[p]rpsls`",
"requirements": [],
"short": "Play Rock Papers Scissor Lizard Spock in Discord!",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"star trek",

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

@ -2,16 +2,15 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Convert any website into text and post it in chat",
"hidden": true,
"install_msg": "Thank you for installing SayUrl! Get started with `[p]load sayurl`, then `[p]help SayUrl",
"requirements": ["html2text"],
"requirements": [
"html2text"
],
"short": "Convert URL to text",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"tools"

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

@ -3,16 +3,13 @@
"Bobloy",
"SnappyDragon"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Look up SCP articles. Warning: Some of them may be too creepy or gruesome.",
"hidden": false,
"install_msg": "You are now connected to the SCP database. You may now proceed to access the data using `[p]load scp`, then `[p]help SCP`",
"requirements": [],
"short": "Look up SCP articles.",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"gruesom"

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

@ -2,16 +2,13 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Steals custom emojis the bot sees and moves them to an emoji server",
"hidden": false,
"install_msg": "Thank you for installing StealEmoji",
"requirements": [],
"short": "Steals custom emojis",
"end_user_data_statement": "This cog gathers custom emojis from all sources, but stores no End User Data",
"tags": [
"bobloy",
"utils",

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

@ -2,15 +2,12 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Apply roles based on the # of days on server",
"hidden": false,
"install_msg": "Thank you for installing timerole.\nGet started with `[p]load timerole`. Configure with `[p]timerole`",
"short": "Apply roles after # of days",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"utilities",

@ -22,6 +22,10 @@ class Timerole(Cog):
self.config.register_guild(**default_guild)
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):
self.updating.cancel()

@ -2,11 +2,7 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Send Text2Speech messages as an uploaded mp3",
"hidden": false,
"install_msg": "Thank you for installing TTS. Get started with `[p]load tts`, then `[p]help TTS`",
@ -14,6 +10,7 @@
"gTTS"
],
"short": "Send TTS messages as uploaded mp3",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"utils",

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

@ -3,16 +3,13 @@
"Bobloy",
"SnappyDragon"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Encode/Decode Unicode characters!",
"hidden": false,
"install_msg": "\u0048\u0065\u006c\u006c\u006f\u0021 \u0054\u0068\u0069\u0073 \u006d\u0065\u0073\u0073\u0061\u0067\u0065 \u0077\u0061\u0073 \u0077\u0072\u0069\u0074\u0074\u0065\u006e \u0069\u006e \u0055\u004e\u0049\u0043\u004f\u0044\u0045\u002e",
"requirements": [],
"short": "Encode/Decode Unicode characters!",
"end_user_data_statement": "This cog does not store any End User Data",
"tags": [
"bobloy",
"utility",

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

@ -2,16 +2,13 @@
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"min_bot_version": "3.3.0",
"description": "Customizable Werewolf Game",
"hidden": false,
"hidden": true,
"install_msg": "Thank you for installing Werewolf! Get started with `[p]load werewolf`\n Use `[p]wwset` to run inital setup",
"requirements": [],
"short": "Werewolf Game",
"end_user_data_statement": "This store user IDs in memory while they're actively using the cog, and store no persistent End User Data.",
"tags": [
"mafia",
"werewolf",

@ -20,6 +20,7 @@ class Werewolf(Cog):
"""
def __init__(self, bot: Red):
super().__init__()
self.bot = bot
self.config = Config.get_conf(
self, identifier=87101114101119111108102, force_registration=True
@ -37,6 +38,10 @@ class Werewolf(Cog):
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):
print("Unload called")
for game in self.games.values():

Loading…
Cancel
Save