Merge pull request #112 from bobloy/3.4_compatibility
3.4 compatibility
This commit is contained in:
commit
7507141ec4
@ -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()
|
||||||
|
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Send daily announcements to all servers at a specified times",
|
"description": "Send daily announcements to all servers at a specified times",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing AnnounceDaily! Get started with `[p]load announcedaily` and `[p]help AnnounceDaily`",
|
"install_msg": "Thank you for installing AnnounceDaily! Get started with `[p]load announcedaily` and `[p]help AnnounceDaily`",
|
||||||
"short": "Send daily announcements",
|
"short": "Send daily announcements",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy"
|
"bobloy"
|
||||||
]
|
]
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Start an Audio Trivia game",
|
"description": "Start an Audio Trivia game",
|
||||||
"hidden": false,
|
"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`",
|
"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",
|
"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": [
|
"tags": [
|
||||||
"fox",
|
"fox",
|
||||||
"bobloy",
|
"bobloy",
|
||||||
|
@ -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,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Creates custom commands to adjust roles and send custom messages",
|
"description": "Creates custom commands to adjust roles and send custom messages",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing Custom Commands w/ Roles. Get started with `[p]load ccrole` and `[p]help CCRole`",
|
"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",
|
"short": "Creates commands that adjust roles",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"fox",
|
"fox",
|
||||||
"bobloy",
|
"bobloy",
|
||||||
|
@ -3,6 +3,7 @@ import logging
|
|||||||
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
|
||||||
@ -13,6 +14,7 @@ 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.predicates import MessagePredicate
|
from redbot.core.utils.predicates import MessagePredicate
|
||||||
|
from redbot.core.utils import AsyncIter
|
||||||
|
|
||||||
log = logging.getLogger("red.fox_v3.chat")
|
log = logging.getLogger("red.fox_v3.chat")
|
||||||
|
|
||||||
@ -65,6 +67,10 @@ 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(self):
|
def _create_chatbot(self):
|
||||||
|
|
||||||
return ChatBot(
|
return ChatBot(
|
||||||
@ -115,7 +121,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
|
||||||
|
@ -2,11 +2,7 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.10",
|
||||||
3,
|
|
||||||
3,
|
|
||||||
10
|
|
||||||
],
|
|
||||||
"description": "Create an offline chatbot that talks like your average member using Machine Learning",
|
"description": "Create an offline chatbot that talks like your average member using Machine Learning",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing Chatter! Get started ith `[p]load chatter` and `[p]help Chatter`",
|
"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"
|
"spacy>=2.3,<2.4"
|
||||||
],
|
],
|
||||||
"short": "Local Chatbot run on machine learning",
|
"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": [
|
"tags": [
|
||||||
"chat",
|
"chat",
|
||||||
"chatbot",
|
"chatbot",
|
||||||
|
@ -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"""
|
||||||
|
@ -2,16 +2,15 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Lint python code posted in chat",
|
"description": "Lint python code posted in chat",
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
"install_msg": "Thank you for installing CogLint! Get started with `[p]load coglint` and `[p]help CogLint`",
|
"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",
|
"short": "Python cog linter",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"utils",
|
"utils",
|
||||||
|
@ -2,11 +2,7 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.4.0",
|
||||||
3,
|
|
||||||
4,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Handle war games by filling in specified territories with colors",
|
"description": "Handle war games by filling in specified territories with colors",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing Conquest. Get started with `[p]load conquest`, then `[p]help Conquest`",
|
"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)
|
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 = {
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Tell dad jokes and give out bad nicknames",
|
"description": "Tell dad jokes and give out bad nicknames",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing Dad. Get started with `[p]load dad`, then `[p]help Dad`",
|
"install_msg": "Thank you for installing Dad. Get started with `[p]load dad`, then `[p]help Dad`",
|
||||||
"short": "Dad joke bot",
|
"short": "Dad joke bot",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"utils",
|
"utils",
|
||||||
|
@ -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):
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Assign roles to be exclusive, preventing other roles from being added",
|
"description": "Assign roles to be exclusive, preventing other roles from being added",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing ExclusiveRole. Get started with `[p]load exclusiverole` and `[p]help ExclusiveRole`",
|
"install_msg": "Thank you for installing ExclusiveRole. Get started with `[p]load exclusiverole` and `[p]help ExclusiveRole`",
|
||||||
"short": "Set roles to be exclusive",
|
"short": "Set roles to be exclusive",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"fox",
|
"fox",
|
||||||
"bobloy",
|
"bobloy",
|
||||||
|
17
flag/flag.py
17
flag/flag.py
@ -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_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()
|
@checks.is_owner()
|
||||||
@commands.guild_only()
|
@commands.guild_only()
|
||||||
@commands.command()
|
@commands.command()
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Add expiring flags on members to track warnings or incidents",
|
"description": "Add expiring flags on members to track warnings or incidents",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing Flag! Get started with `[p]load flag` and `[p]help Flag`",
|
"install_msg": "Thank you for installing Flag! Get started with `[p]load flag` and `[p]help Flag`",
|
||||||
"short": "Add expiring flags to members",
|
"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": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"warning",
|
"warning",
|
||||||
|
@ -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=""):
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Mentions roles that are unmentionable",
|
"description": "Mentions roles that are unmentionable",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing ForceMention! Get started with `[p]load forcemention`, then `[p]forcemention`",
|
"install_msg": "Thank you for installing ForceMention! Get started with `[p]load forcemention`, then `[p]forcemention`",
|
||||||
"short": "Mention unmentionables",
|
"short": "Mention unmentionables",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"utils"
|
"utils"
|
||||||
|
@ -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()
|
||||||
|
@ -2,16 +2,13 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Play Hangman with your friends",
|
"description": "Play Hangman with your friends",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing Hangman! Get started with `[p]load hangman`, then `[p]help Hangman`",
|
"install_msg": "Thank you for installing Hangman! Get started with `[p]load hangman`, then `[p]help Hangman`",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"short": "Play Hangman",
|
"short": "Play Hangman",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"game",
|
"game",
|
||||||
"fun",
|
"fun",
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Create a channel with updating server info",
|
"description": "Create a channel with updating server info",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing InfoChannel. Get started with `[p]load infochannel`, then `[p]help InfoChannel`",
|
"install_msg": "Thank you for installing InfoChannel. Get started with `[p]load infochannel`, then `[p]help InfoChannel`",
|
||||||
"short": "Updating server info channel",
|
"short": "Updating server info channel",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"utils"
|
"utils"
|
||||||
|
@ -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):
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Keeps track of when people leave the server, and posts a message notifying",
|
"description": "Keeps track of when people leave the server, and posts a message notifying",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing Leaver. Get started with `[p]load leaver`, then `[p]help Leaver`",
|
"install_msg": "Thank you for installing Leaver. Get started with `[p]load leaver`, then `[p]help Leaver`",
|
||||||
"short": "Send message on leave",
|
"short": "Send message on leave",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"utils",
|
"utils",
|
||||||
|
@ -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):
|
||||||
|
@ -3,11 +3,7 @@
|
|||||||
"Bobloy",
|
"Bobloy",
|
||||||
"SnappyDragon"
|
"SnappyDragon"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Calculate the love percentage for two users",
|
"description": "Calculate the love percentage for two users",
|
||||||
"hidden": false,
|
"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`",
|
"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"
|
"beautifulsoup4"
|
||||||
],
|
],
|
||||||
"short": "Calculate love percentage",
|
"short": "Calculate love percentage",
|
||||||
|
"end_user_data_statement": "This cog uses the core Bank cog. It store no End User Data otherwise.",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"fun",
|
"fun",
|
||||||
|
@ -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
|
||||||
|
@ -2,16 +2,15 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Keep track of when users were last seen online",
|
"description": "Keep track of when users were last seen online",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing LastSeen. Get started with `[p]load lseen`, then `[p]help LastSeen`",
|
"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",
|
"short": "Last seen tracker",
|
||||||
|
"end_user_data_statement": "This cog stores user IDs along with a time they were last online per guild",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"utils",
|
"utils",
|
||||||
|
@ -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)
|
||||||
|
@ -2,11 +2,7 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"min_bot_version": [
|
"min_bot_version": "3.3.11",
|
||||||
3,
|
|
||||||
3,
|
|
||||||
11
|
|
||||||
],
|
|
||||||
"description": "Monitor images for NSFW content and moves them to a nsfw channel if possible",
|
"description": "Monitor images for NSFW content and moves them to a nsfw channel if possible",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing Nudity. Get started with `[p]load nudity`, then `[p]help Nudity`",
|
"install_msg": "Thank you for installing Nudity. Get started with `[p]load nudity`, then `[p]help Nudity`",
|
||||||
|
@ -4,16 +4,13 @@
|
|||||||
"SnappyDragon",
|
"SnappyDragon",
|
||||||
"PaddoInWonderland"
|
"PaddoInWonderland"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Grow your own plants! Be sure to take care of it. Do `[p]gardening` to get started",
|
"description": "Grow your own plants! Be sure to take care of it. Do `[p]gardening` to get started",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing PlantTycoon. Check out all the commands with `[p]help PlantTycoon`",
|
"install_msg": "Thank you for installing PlantTycoon. Check out all the commands with `[p]help PlantTycoon`",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"short": "Grow your own plants! Do `[p]gardening` to get started.",
|
"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": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"games",
|
"games",
|
||||||
|
@ -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:
|
||||||
|
@ -2,11 +2,7 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Create a QR code invite for the server",
|
"description": "Create a QR code invite for the server",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing QRInvite! Get started with `[p]load qrinvite`, then `[p]help QRInvite`",
|
"install_msg": "Thank you for installing QRInvite! Get started with `[p]load qrinvite`, then `[p]help QRInvite`",
|
||||||
@ -14,6 +10,7 @@
|
|||||||
"MyQR"
|
"MyQR"
|
||||||
],
|
],
|
||||||
"short": "Create a QR code invite",
|
"short": "Create a QR code invite",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"tools",
|
"tools",
|
||||||
|
@ -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,
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Cog to prevent reactions on specific messages from certain users",
|
"description": "Cog to prevent reactions on specific messages from certain users",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing ReactRestrict.",
|
"install_msg": "Thank you for installing ReactRestrict.",
|
||||||
"short": "Prevent reactions to messages",
|
"short": "Prevent reactions to messages",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"react",
|
"react",
|
||||||
"reaction",
|
"reaction",
|
||||||
|
@ -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.
|
||||||
|
@ -3,15 +3,12 @@
|
|||||||
"Bobloy",
|
"Bobloy",
|
||||||
"SnappyDragon"
|
"SnappyDragon"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Apply for a job at the recycling plant! Sort out the garbage!",
|
"description": "Apply for a job at the recycling plant! Sort out the garbage!",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing RecyclingPlant. Start recycling today with `[p]load recyclingplant`, then `[p]recyclingplant`",
|
"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!",
|
"short": "Apply for a job at the recycling plant!",
|
||||||
|
"end_user_data_statement": "This cog used the core",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"environment",
|
"environment",
|
||||||
|
@ -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:
|
||||||
|
@ -3,16 +3,13 @@
|
|||||||
"Bobloy",
|
"Bobloy",
|
||||||
"SnappyDragon"
|
"SnappyDragon"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Play Rock Papers Scissor Lizard Spock by Sam Kass in Discord!",
|
"description": "Play Rock Papers Scissor Lizard Spock by Sam Kass in Discord!",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing RPSLS. Get started with `[p]load rpsls`, then `[p]rpsls`",
|
"install_msg": "Thank you for installing RPSLS. Get started with `[p]load rpsls`, then `[p]rpsls`",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"short": "Play Rock Papers Scissor Lizard Spock in Discord!",
|
"short": "Play Rock Papers Scissor Lizard Spock in Discord!",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"star trek",
|
"star trek",
|
||||||
|
@ -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):
|
||||||
"""
|
"""
|
||||||
|
@ -2,16 +2,15 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Convert any website into text and post it in chat",
|
"description": "Convert any website into text and post it in chat",
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
"install_msg": "Thank you for installing SayUrl! Get started with `[p]load sayurl`, then `[p]help SayUrl",
|
"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",
|
"short": "Convert URL to text",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"tools"
|
"tools"
|
||||||
|
@ -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):
|
||||||
"""
|
"""
|
||||||
|
@ -3,16 +3,13 @@
|
|||||||
"Bobloy",
|
"Bobloy",
|
||||||
"SnappyDragon"
|
"SnappyDragon"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Look up SCP articles. Warning: Some of them may be too creepy or gruesome.",
|
"description": "Look up SCP articles. Warning: Some of them may be too creepy or gruesome.",
|
||||||
"hidden": false,
|
"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`",
|
"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": [],
|
"requirements": [],
|
||||||
"short": "Look up SCP articles.",
|
"short": "Look up SCP articles.",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"gruesom"
|
"gruesom"
|
||||||
|
@ -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.
|
||||||
|
@ -2,16 +2,13 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Steals custom emojis the bot sees and moves them to an emoji server",
|
"description": "Steals custom emojis the bot sees and moves them to an emoji server",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing StealEmoji",
|
"install_msg": "Thank you for installing StealEmoji",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"short": "Steals custom emojis",
|
"short": "Steals custom emojis",
|
||||||
|
"end_user_data_statement": "This cog gathers custom emojis from all sources, but stores no End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"utils",
|
"utils",
|
||||||
|
@ -49,6 +49,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):
|
||||||
"""
|
"""
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Apply roles based on the # of days on server",
|
"description": "Apply roles based on the # of days on server",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing timerole.\nGet started with `[p]load timerole`. Configure with `[p]timerole`",
|
"install_msg": "Thank you for installing timerole.\nGet started with `[p]load timerole`. Configure with `[p]timerole`",
|
||||||
"short": "Apply roles after # of days",
|
"short": "Apply roles after # of days",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"utilities",
|
"utilities",
|
||||||
|
@ -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()
|
||||||
|
|
||||||
|
@ -2,11 +2,7 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Send Text2Speech messages as an uploaded mp3",
|
"description": "Send Text2Speech messages as an uploaded mp3",
|
||||||
"hidden": false,
|
"hidden": false,
|
||||||
"install_msg": "Thank you for installing TTS. Get started with `[p]load tts`, then `[p]help TTS`",
|
"install_msg": "Thank you for installing TTS. Get started with `[p]load tts`, then `[p]help TTS`",
|
||||||
@ -14,6 +10,7 @@
|
|||||||
"gTTS"
|
"gTTS"
|
||||||
],
|
],
|
||||||
"short": "Send TTS messages as uploaded mp3",
|
"short": "Send TTS messages as uploaded mp3",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"utils",
|
"utils",
|
||||||
|
@ -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):
|
||||||
"""
|
"""
|
||||||
|
@ -3,16 +3,13 @@
|
|||||||
"Bobloy",
|
"Bobloy",
|
||||||
"SnappyDragon"
|
"SnappyDragon"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Encode/Decode Unicode characters!",
|
"description": "Encode/Decode Unicode characters!",
|
||||||
"hidden": false,
|
"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",
|
"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": [],
|
"requirements": [],
|
||||||
"short": "Encode/Decode Unicode characters!",
|
"short": "Encode/Decode Unicode characters!",
|
||||||
|
"end_user_data_statement": "This cog does not store any End User Data",
|
||||||
"tags": [
|
"tags": [
|
||||||
"bobloy",
|
"bobloy",
|
||||||
"utility",
|
"utility",
|
||||||
|
@ -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."""
|
||||||
|
@ -2,16 +2,13 @@
|
|||||||
"author": [
|
"author": [
|
||||||
"Bobloy"
|
"Bobloy"
|
||||||
],
|
],
|
||||||
"bot_version": [
|
"min_bot_version": "3.3.0",
|
||||||
3,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"description": "Customizable Werewolf Game",
|
"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",
|
"install_msg": "Thank you for installing Werewolf! Get started with `[p]load werewolf`\n Use `[p]wwset` to run inital setup",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"short": "Werewolf Game",
|
"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": [
|
"tags": [
|
||||||
"mafia",
|
"mafia",
|
||||||
"werewolf",
|
"werewolf",
|
||||||
|
@ -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…
x
Reference in New Issue
Block a user