Shoutout to YamiKaitou for starting the work on this 2+ years ago with a PR. Maybe one day it will be merged into core. https://github.com/Cog-Creators/Red-DiscordBot/pull/5325
2 |
3 | # [p]bankevents
4 | Get help using the BankEvents cog
5 | - Usage: `[p]bankevents`
6 | - Restricted to: `BOT_OWNER`
7 |
--------------------------------------------------------------------------------
/cowclicker/abc.py:
--------------------------------------------------------------------------------
1 | from abc import ABC, ABCMeta, abstractmethod
2 |
3 | from discord.ext.commands.cog import CogMeta
4 | from piccolo.engine.postgres import PostgresEngine
5 | from redbot.core.bot import Red
6 |
7 |
8 | class CompositeMetaClass(CogMeta, ABCMeta):
9 | """Type detection"""
10 |
11 |
12 | class MixinMeta(ABC):
13 | """Type hinting"""
14 |
15 | def __init__(self, *_args):
16 | self.bot: Red
17 | self.db: PostgresEngine | None
18 |
19 | @abstractmethod
20 | async def initialize(self) -> None:
21 | raise NotImplementedError
22 |
--------------------------------------------------------------------------------
/levelup/commands/__init__.py:
--------------------------------------------------------------------------------
1 | from redbot.core.i18n import Translator, cog_i18n
2 |
3 | from ..abc import CompositeMetaClass
4 | from .admin import Admin
5 | from .data import DataAdmin
6 | from .owner import Owner
7 | from .stars import Stars
8 | from .user import User
9 | from .weekly import Weekly
10 |
11 | _ = Translator("LevelUp", __file__)
12 |
13 |
14 | @cog_i18n(_)
15 | class Commands(
16 | Admin,
17 | DataAdmin,
18 | Owner,
19 | Stars,
20 | User,
21 | Weekly,
22 | metaclass=CompositeMetaClass,
23 | ):
24 | """Subclass all command classes"""
25 |
--------------------------------------------------------------------------------
/appeals/build.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 | from pathlib import Path
3 |
4 | from engine import engine
5 |
6 | root = Path(__file__).parent
7 |
8 |
9 | async def main():
10 | try:
11 | desc = input("Enter a description for the migration: ")
12 | res = await engine.create_migrations(root, True, desc)
13 | if "The command failed." in res:
14 | raise Exception(res)
15 | print(res)
16 | except Exception as e:
17 | print(f"Error: {e}")
18 | print(await engine.diagnose_issues(root))
19 |
20 |
21 | if __name__ == "__main__":
22 | asyncio.run(main())
23 |
--------------------------------------------------------------------------------
/tickets/abc.py:
--------------------------------------------------------------------------------
1 | from abc import ABC, ABCMeta, abstractmethod
2 |
3 | import discord
4 | from discord.ext.commands.cog import CogMeta
5 | from redbot.core.bot import Red
6 | from redbot.core.config import Config
7 |
8 |
9 | class CompositeMetaClass(CogMeta, ABCMeta):
10 | """Type detection"""
11 |
12 |
13 | class MixinMeta(ABC):
14 | """Type hinting"""
15 |
16 | def __init__(self, *_args):
17 | self.bot: Red
18 | self.config: Config
19 |
20 | @abstractmethod
21 | async def initialize(self, target_guild: discord.Guild = None) -> None:
22 | raise NotImplementedError
23 |
--------------------------------------------------------------------------------
/referrals/build.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 | from pathlib import Path
3 |
4 | from engine import engine
5 |
6 | root = Path(__file__).parent
7 |
8 |
9 | async def main():
10 | try:
11 | desc = input("Enter a description for the migration: ")
12 | res = await engine.create_migrations(root, True, desc)
13 | if "The command failed." in res:
14 | raise Exception(res)
15 | print(res)
16 | except Exception as e:
17 | print(f"Error: {e}")
18 | print(await engine.diagnose_issues(root))
19 |
20 |
21 | if __name__ == "__main__":
22 | asyncio.run(main())
23 |
--------------------------------------------------------------------------------
/meow/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Meow",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog does not persistently store data about users right meow.",
8 | "hidden": false,
9 | "install_msg": "Thanks for installing, have a good day meow!",
10 | "min_bot_version": "3.4.0",
11 | "min_python_version": [
12 | 3,
13 | 9,
14 | 1
15 | ],
16 | "permissions": [],
17 | "required_cogs": {},
18 | "requirements": [],
19 | "short": "Meow",
20 | "tags": [
21 | "meow",
22 | "cat",
23 | "cats"
24 | ],
25 | "type": "COG"
26 | }
27 |
--------------------------------------------------------------------------------
/levelup/listeners/guild.py:
--------------------------------------------------------------------------------
1 | import logging
2 |
3 | import discord
4 | from redbot.core import commands
5 |
6 | from ..abc import MixinMeta
7 |
8 | log = logging.getLogger("red.levelup.listeners.guild")
9 |
10 |
11 | class GuildListener(MixinMeta):
12 | @commands.Cog.listener()
13 | async def on_guild_remove(self, old_guild: discord.Guild):
14 | if not self.db.auto_cleanup:
15 | return
16 | if old_guild.id not in self.db.configs:
17 | return
18 | del self.db.configs[old_guild.id]
19 | log.info(f"Purged config for {old_guild.name} ({old_guild.id})")
20 | self.save()
21 |
--------------------------------------------------------------------------------
/nonuke/common/__init__.py:
--------------------------------------------------------------------------------
1 | import orjson
2 | from pydantic import VERSION, BaseModel
3 |
4 |
5 | class Base(BaseModel):
6 | def model_dump(self, *args, **kwargs):
7 | if VERSION >= "2.0.1":
8 | return super().model_dump(*args, **kwargs)
9 | if kwargs.pop("mode", "") == "json":
10 | return orjson.loads(super().json(*args, **kwargs))
11 | return super().dict(*args, **kwargs)
12 |
13 | @classmethod
14 | def model_validate(cls, obj, *args, **kwargs):
15 | if VERSION >= "2.0.1":
16 | return super().model_validate(obj, *args, **kwargs)
17 | return super().parse_obj(obj, *args, **kwargs)
18 |
--------------------------------------------------------------------------------
/profiler/common/__init__.py:
--------------------------------------------------------------------------------
1 | import orjson
2 | from pydantic import VERSION, BaseModel
3 |
4 |
5 | class Base(BaseModel):
6 | def model_dump(self, *args, **kwargs):
7 | if VERSION >= "2.0.1":
8 | return super().model_dump(*args, **kwargs)
9 | if kwargs.pop("mode", "") == "json":
10 | return orjson.loads(super().json(*args, **kwargs))
11 | return super().dict(*args, **kwargs)
12 |
13 | @classmethod
14 | def model_validate(cls, obj, *args, **kwargs):
15 | if VERSION >= "2.0.1":
16 | return super().model_validate(obj, *args, **kwargs)
17 | return super().parse_obj(obj, *args, **kwargs)
18 |
--------------------------------------------------------------------------------
/crafter/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Get crafting information for Ark Survival Evolved!",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog does not store any data. Data used for crafting requirements was sourced from https://ark.wiki.gg/wiki/Items",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing!",
8 | "min_bot_version": "3.5.3",
9 | "min_python_version": [3, 9, 0],
10 | "permissions": [],
11 | "required_cogs": {},
12 | "requirements": [],
13 | "short": "Get crafting information for Ark Survival Evolved!",
14 | "tags": ["ark", "survival", "crafting", "crafter"],
15 | "type": "COG"
16 | }
17 |
--------------------------------------------------------------------------------
/economytrack/abc.py:
--------------------------------------------------------------------------------
1 | from abc import ABC, ABCMeta, abstractmethod
2 | from concurrent.futures import ThreadPoolExecutor
3 |
4 | import discord
5 | import pandas as pd
6 | from discord.ext.commands.cog import CogMeta
7 | from redbot.core.bot import Red
8 | from redbot.core.config import Config
9 |
10 |
11 | class CompositeMetaClass(CogMeta, ABCMeta):
12 | """Type detection"""
13 |
14 |
15 | class MixinMeta(ABC):
16 | """Type hinting"""
17 |
18 | bot: Red
19 | config: Config
20 | executor: ThreadPoolExecutor
21 |
22 | @abstractmethod
23 | async def get_plot(self, df: pd.DataFrame, y_label: str) -> discord.File:
24 | raise NotImplementedError
25 |
--------------------------------------------------------------------------------
/levelup/tasks/locales/messages.pot:
--------------------------------------------------------------------------------
1 | #
2 | msgid ""
3 | msgstr ""
4 | "Project-Id-Version: PACKAGE VERSION\n"
5 | "POT-Creation-Date: 2025-11-27 13:02-0500\n"
6 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
7 | "Last-Translator: FULL NAME \n"
8 | "Language-Team: LANGUAGE \n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "Generated-By: redgettext 3.4.2\n"
13 |
14 | #: levelup\tasks\__init__.py:6
15 | #, docstring
16 | msgid ""
17 | "\n"
18 | " Subclass all shared metaclassed parts of the cog\n"
19 | "\n"
20 | " This includes all task loops for LevelUp\n"
21 | " "
22 | msgstr ""
23 |
--------------------------------------------------------------------------------
/assistantutils/common/utils.py:
--------------------------------------------------------------------------------
1 | import re
2 |
3 |
4 | def clean_name(name: str):
5 | """
6 | Cleans the function name to ensure it only contains alphanumeric characters,
7 | underscores, or dashes and is not longer than 64 characters.
8 |
9 | Args:
10 | name (str): The original function name to clean.
11 |
12 | Returns:
13 | str: The cleaned function name.
14 | """
15 | # Remove any characters that are not alphanumeric, underscore, or dash
16 | cleaned_name = re.sub(r"[^a-zA-Z0-9_-]", "", name)
17 |
18 | # Truncate the string to 64 characters if it's longer
19 | cleaned_name = cleaned_name[:64]
20 |
21 | return cleaned_name
22 |
--------------------------------------------------------------------------------
/metrics/tasks/__init__.py:
--------------------------------------------------------------------------------
1 | # Task loops can be defined here
2 | from ..abc import CompositeMetaClass
3 | from .snapshot import Snapshot
4 |
5 |
6 | class TaskLoops(Snapshot, metaclass=CompositeMetaClass):
7 | """
8 | Subclass all task loops in this directory so you can import this single task loop class in your cog's class constructor.
9 |
10 | See `commands` directory for the same pattern.
11 | """
12 |
13 | def start_tasks(self) -> None:
14 | if not self.take_snapshot.is_running():
15 | self.take_snapshot.start()
16 |
17 | def stop_tasks(self) -> None:
18 | if self.take_snapshot.is_running():
19 | self.take_snapshot.cancel()
20 |
--------------------------------------------------------------------------------
/nonuke/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Anti-Nuke functions",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog does not store data about users.",
8 | "hidden": false,
9 | "install_msg": "Thank you for installing.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/nonuke/README.md",
10 | "min_bot_version": "3.5.0",
11 | "min_python_version": [3, 10, 0],
12 | "permissions": [],
13 | "required_cogs": {},
14 | "requirements": ["pydantic>=2.11,<2.12"],
15 | "short": "Anti-Nuke Cog",
16 | "tags": [
17 | "nuke",
18 | "antinuke",
19 | "anti-nuke",
20 | "nonuke"
21 | ],
22 | "type": "COG"
23 | }
24 |
--------------------------------------------------------------------------------
/assistant/example-funcs/get_member_balance.py:
--------------------------------------------------------------------------------
1 | import discord
2 | from redbot.core import bank
3 |
4 |
5 | async def get_member_balance(guild: discord.Guild, name: str, *args, **kwargs) -> str:
6 | user = guild.get_member_named(name)
7 | if not user:
8 | return "Could not find that user"
9 | bal = await bank.get_balance(user)
10 | return f"{bal} VC"
11 |
12 |
13 | schema = {
14 | "name": "get_member_balance",
15 | "description": "Get a member's VC balance by name",
16 | "parameters": {
17 | "type": "object",
18 | "properties": {"name": {"type": "string", "description": "the name of the member"}},
19 | "required": ["name"],
20 | },
21 | }
22 |
--------------------------------------------------------------------------------
/levelup/generator/tenor/locales/ko-KR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: Korean\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=1; plural=0;\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: ko\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/generator/tenor/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 194\n"
18 | "Language: ko_KR\n"
19 |
20 |
--------------------------------------------------------------------------------
/levelup/generator/tenor/locales/fr-FR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: French\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: fr\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/generator/tenor/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 194\n"
18 | "Language: fr_FR\n"
19 |
20 |
--------------------------------------------------------------------------------
/bankdecay/abc.py:
--------------------------------------------------------------------------------
1 | import typing as t
2 | from abc import ABCMeta, abstractmethod
3 |
4 | import discord
5 | from discord.ext.commands.cog import CogMeta
6 | from redbot.core.bot import Red
7 |
8 | from .common.models import DB
9 |
10 |
11 | class CompositeMetaClass(CogMeta, ABCMeta):
12 | """Type detection"""
13 |
14 |
15 | class MixinMeta(metaclass=ABCMeta):
16 | """Type hinting"""
17 |
18 | bot: Red
19 | db: DB
20 |
21 | @abstractmethod
22 | async def save(self) -> None:
23 | raise NotImplementedError
24 |
25 | @abstractmethod
26 | async def decay_guild(self, guild: discord.Guild, check_only: bool = False) -> t.Dict[str, int]:
27 | raise NotImplementedError
28 |
--------------------------------------------------------------------------------
/bankdecay/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Inactivity-based economy credit decay with customizable settings",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog does not store any private data about users.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing! Type `[p]bankdecay` to view the commands.\n**NOTE**: THIS DOES NOT WORK WITH GLOBAL BANKS",
8 | "min_bot_version": "3.5.3",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": [],
11 | "required_cogs": {},
12 | "requirements": ["pydantic>=2.11,<2.12", "pytz", "apscheduler"],
13 | "short": "Inactivity-based economy credit decay",
14 | "tags": [],
15 | "type": "COG"
16 | }
17 |
--------------------------------------------------------------------------------
/guildlock/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco" ],
3 | "description": "Manage what kind of servers the bot can join. A stripped down rewrite of Phen's Baron cog",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog does not persistently store any data or metadata about users.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing!",
8 | "min_bot_version": "3.5.0",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": [],
11 | "required_cogs": {},
12 | "requirements": ["pydantic>=2.11,<2.12"],
13 | "short": "Manage what kind of servers the bot can join",
14 | "tags": ["guild", "utility", "management", "baron", "guildlock", "lock"],
15 | "type": "COG"
16 | }
17 |
--------------------------------------------------------------------------------
/levelup/generator/tenor/locales/de-DE.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: German\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: de\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/generator/tenor/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 194\n"
18 | "Language: de_DE\n"
19 |
20 |
--------------------------------------------------------------------------------
/levelup/generator/tenor/locales/es-ES.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: Spanish\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: es-ES\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/generator/tenor/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 194\n"
18 | "Language: es_ES\n"
19 |
20 |
--------------------------------------------------------------------------------
/levelup/generator/tenor/locales/tr-TR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: Turkish\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: tr\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/generator/tenor/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 194\n"
18 | "Language: tr_TR\n"
19 |
20 |
--------------------------------------------------------------------------------
/levelup/generator/tenor/locales/pt-PT.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: Portuguese\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: pt-PT\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/generator/tenor/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 194\n"
18 | "Language: pt_PT\n"
19 |
20 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: "[Cog Name] feature request"
5 | labels: ""
6 | assignees: ""
7 | ---
8 |
9 | **Is your feature request related to a problem? Please describe.**
10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
11 |
12 | **Describe the solution you'd like**
13 | A clear and concise description of what you want to happen.
14 |
15 | **Describe alternatives you've considered**
16 | A clear and concise description of any alternative solutions or features you've considered.
17 |
18 | **Additional context**
19 | Add any other context or screenshots about the feature request here.
20 |
--------------------------------------------------------------------------------
/appeals/common/checks.py:
--------------------------------------------------------------------------------
1 | from discord.ext.commands.core import check
2 | from redbot.core import commands
3 |
4 |
5 | def ensure_db_connection():
6 | """Decorator to ensure a database connection is active.
7 |
8 | Example:
9 | ```python
10 | @ensure_db_connection()
11 | @commands.command()
12 | async def mycommand(self, ctx):
13 | await ctx.send("Database connection is active")
14 | ```
15 | """
16 |
17 | async def predicate(ctx: commands.Context) -> bool:
18 | if not ctx.cog.db:
19 | txt = "Database connection is not active, try again later"
20 | raise commands.UserFeedbackCheckFailure(txt)
21 | return True
22 |
23 | return check(predicate)
24 |
--------------------------------------------------------------------------------
/referrals/common/checks.py:
--------------------------------------------------------------------------------
1 |
2 | from discord.ext.commands.core import check
3 | from redbot.core import commands
4 |
5 |
6 | def ensure_db_connection():
7 | """Decorator to ensure a database connection is active.
8 |
9 | Example:
10 | ```python
11 | @ensure_db_connection()
12 | @commands.command()
13 | async def mycommand(self, ctx):
14 | await ctx.send("Database connection is active")
15 | ```
16 | """
17 |
18 | async def predicate(ctx: commands.Context) -> bool:
19 | if not ctx.cog.db:
20 | txt = "Database connection is not active, try again later"
21 | raise commands.UserFeedbackCheckFailure(txt)
22 | return True
23 |
24 | return check(predicate)
25 |
--------------------------------------------------------------------------------
/setools/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Server management tools for Space Engineers servers.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog does not store any user data.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing!",
8 | "min_bot_version": "3.5.3",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": [],
11 | "required_cogs": {},
12 | "requirements": ["pydantic>=2.11,<2.12", "plotly", "numpy"],
13 | "short": "Space Engineers Server Manager",
14 | "tags": [
15 | "space",
16 | "engineers",
17 | "server",
18 | "manager",
19 | "utility",
20 | "management",
21 | "tools",
22 | "se",
23 | "vrage"
24 | ],
25 | "type": "COG"
26 | }
27 |
--------------------------------------------------------------------------------
/vrtutils/commands/__init__.py:
--------------------------------------------------------------------------------
1 | from ..abc import CompositeMetaClass
2 | from .bot import BotInfo
3 | from .botemojis import EmojiManager
4 | from .chatexport import ChatExport
5 | from .dcord import Dcord
6 | from .disk import DiskBench
7 | from .guildprofiles import GuildProfiles
8 | from .logs import Logs
9 | from .misc import Misc
10 | from .noping import NoPing
11 | from .todo import ToDo
12 | from .updates import Updates
13 | from .zipper import Zipper
14 |
15 |
16 | class Utils(
17 | BotInfo,
18 | EmojiManager,
19 | ChatExport,
20 | Dcord,
21 | DiskBench,
22 | GuildProfiles,
23 | Logs,
24 | Misc,
25 | NoPing,
26 | ToDo,
27 | Updates,
28 | Zipper,
29 | metaclass=CompositeMetaClass,
30 | ):
31 | """Subclass all commands"""
32 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: "[Cog Name] issue title"
5 | labels: ""
6 | assignees: ""
7 | ---
8 |
9 | **Describe the bug**
10 | A clear and concise description of what the bug is.
11 |
12 | **Cog Version\***
13 | Specify the version of the cog you are using.
14 |
15 | **To Reproduce**
16 | Steps to reproduce the behavior:
17 |
18 | 1. Go to '...'
19 | 2. Click on '....'
20 | 3. Scroll down to '....'
21 | 4. See error
22 |
23 | **Expected behavior**
24 | A clear and concise description of what you expected to happen.
25 |
26 | **Screenshots**
27 | If applicable, add screenshots to help explain your problem.
28 |
29 | **Additional context**
30 | Add any other context about the problem here.
31 |
--------------------------------------------------------------------------------
/ideaboard/abc.py:
--------------------------------------------------------------------------------
1 | from abc import ABC, ABCMeta, abstractmethod
2 |
3 | import discord
4 | from discord.ext.commands.cog import CogMeta
5 | from redbot.core.bot import Red
6 |
7 | from .common.models import DB
8 |
9 |
10 | class CompositeMetaClass(CogMeta, ABCMeta):
11 | """Type detection"""
12 |
13 |
14 | class MixinMeta(ABC):
15 | """Type hinting"""
16 |
17 | def __init__(self, *_args):
18 | self.bot: Red
19 | self.db: DB
20 |
21 | @abstractmethod
22 | async def save(self) -> None:
23 | """Save the config"""
24 | raise NotImplementedError
25 |
26 | @abstractmethod
27 | async def fetch_profile(self, user: discord.Member) -> discord.Embed:
28 | """Get the user's profile"""
29 | raise NotImplementedError
30 |
--------------------------------------------------------------------------------
/levelup/generator/tenor/locales/hr-HR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: Croatian\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: hr\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/generator/tenor/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 194\n"
18 | "Language: hr_HR\n"
19 |
20 |
--------------------------------------------------------------------------------
/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Various utility cogs for Red, with a few other random/fun cogs sprinkled in.",
6 | "install_msg": "Thanks for installing!\nIf you have any suggestions, or found any bugs, feel free to create an issue on my repo or contact me in the Red 3rd party cog support server",
7 | "name": "vrt-cogs",
8 | "short": "Utility & Game Server cogs by Vertyco",
9 | "tags": [
10 | "utilities",
11 | "utility",
12 | "tools",
13 | "economy",
14 | "games",
15 | "fun",
16 | "ark",
17 | "minecraft",
18 | "xbox",
19 | "microsoft",
20 | "vertyco",
21 | "star citizen",
22 | "leveler",
23 | "levelup",
24 | "leveling",
25 | "support",
26 | "ticket",
27 | "tickets"
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/bankbackup/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Backup/Restore for server bank balances",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog does not store data about users.",
8 | "hidden": false,
9 | "install_msg": "Thank you for installing! This cog is for transferring bank balances on a per-server basis for bots that have local banks enabled.",
10 | "min_bot_version": "3.4.0",
11 | "min_python_version": [
12 | 3,
13 | 8,
14 | 1
15 | ],
16 | "permissions": [
17 | "administrator"
18 | ],
19 | "required_cogs": {},
20 | "requirements": [],
21 | "short": "Backup and restore bank balances for all members in a server",
22 | "tags": [
23 | "utility",
24 | "economy",
25 | "bank"
26 | ],
27 | "type": "COG"
28 | }
29 |
--------------------------------------------------------------------------------
/hunting/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["aikaterna", "Paddo"],
3 | "description": "Hunting, it hunts birds and things that fly.",
4 | "install_msg": "Check out [p]hunting to get started.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/hunting/README.md",
5 | "short": "A bird hunting game.",
6 | "tags": ["hunting", "hunt", "game"],
7 | "min_python_version": [
8 | 3,
9 | 9,
10 | 1
11 | ],
12 | "type": "COG",
13 | "end_user_data_statement": "This cog does not persistently store end user data. This cog does store discord IDs as needed for operation. This cog does store user stats for the cog such as their score. Users may remove their own content without making a data removal request. This cog does not support data requests, but will respect deletion requests."
14 | }
15 |
--------------------------------------------------------------------------------
/emojitracker/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "A simple guild emoji tracker",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog stores Discord ID's",
8 | "hidden": false,
9 | "install_msg": "Thank you for installing EmojiTracker! type `[p]help EmojiTracker` to see all commands.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/emojitracker/README.md",
10 | "min_bot_version": "3.4.0",
11 | "min_python_version": [
12 | 3,
13 | 9,
14 | 1
15 | ],
16 | "permissions": [
17 | "read_messages"
18 | ],
19 | "required_cogs": {},
20 | "requirements": [
21 | "tabulate"
22 | ],
23 | "short": "Emoji tracker",
24 | "tags": [
25 | "emoji",
26 | "tracker",
27 | "stats"
28 | ],
29 | "type": "COG"
30 | }
31 |
--------------------------------------------------------------------------------
/ideaboard/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Allow users to create suggestions for your server. With optional anonymity and customization.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog does not store suggestion text, only the user id's who are making the suggestions and voters.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing! Type `[p]help IdeaBoard` to see all commands for this cog.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/ideaboard/README.md",
8 | "min_bot_version": "3.5.3",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": [],
11 | "required_cogs": {},
12 | "requirements": ["pydantic>=2.11,<2.12"],
13 | "short": "Make suggestions and share ideas anonymously.",
14 | "tags": [],
15 | "type": "COG"
16 | }
17 |
--------------------------------------------------------------------------------
/gmail/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Send emails through your Gmail account. Configure multiple accounts, set signatures, configure allowed roles to send.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog stores email addresses and app passwords in order to send emails!",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing! Type `[p]gmailhelp` to get started! (This cog is in Beta, please report any bugs to Vertyco on Discord!)",
8 | "min_bot_version": "3.5.0",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": ["administrator"],
11 | "required_cogs": {},
12 | "requirements": ["pydantic[email]", "aiosmtplib"],
13 | "short": "Send emails through your Gmail account!",
14 | "tags": ["email", "mail", "smtp", "gmail", "google"],
15 | "type": "COG"
16 | }
17 |
--------------------------------------------------------------------------------
/cowclicker/build.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 | import os
3 | from pathlib import Path
4 |
5 | from dotenv import load_dotenv
6 | from engine import engine
7 |
8 | load_dotenv()
9 |
10 | config = {
11 | "user": os.environ.get("POSTGRES_USER"),
12 | "password": os.environ.get("POSTGRES_PASSWORD"),
13 | "database": os.environ.get("POSTGRES_DATABASE"),
14 | "host": os.environ.get("POSTGRES_HOST"),
15 | "port": os.environ.get("POSTGRES_PORT"),
16 | }
17 |
18 | root = Path(__file__).parent
19 |
20 |
21 | async def main():
22 | created = await engine.ensure_database_exists(root, config)
23 | print(f"Database created: {created}")
24 | print(await engine.create_migrations(root, config, True))
25 | print(await engine.run_migrations(root, config, True))
26 |
27 |
28 | if __name__ == "__main__":
29 | asyncio.run(main())
30 |
--------------------------------------------------------------------------------
/economytrack/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Track your economy's total balance over time",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog does not store data about users.",
8 | "hidden": false,
9 | "install_msg": "Thank you for installing EconomyTrack!\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/economytrack/README.md",
10 | "min_bot_version": "3.4.0",
11 | "min_python_version": [
12 | 3,
13 | 9,
14 | 1
15 | ],
16 | "permissions": [],
17 | "required_cogs": {},
18 | "requirements": [
19 | "pandas",
20 | "plotly",
21 | "kaleido"
22 | ],
23 | "short": "Economy tracker",
24 | "tags": [
25 | "utility",
26 | "economy",
27 | "bank",
28 | "tracking",
29 | "stats"
30 | ],
31 | "type": "COG"
32 | }
33 |
--------------------------------------------------------------------------------
/guildlog/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Log the bot joining and leaving guilds.",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog does not persistently store data about users.",
8 | "hidden": false,
9 | "install_msg": "Thank you for installing Support! type `[p]help GuildLog` to see all commands.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/guildlog/README.md",
10 | "min_bot_version": "3.4.0",
11 | "min_python_version": [
12 | 3,
13 | 9,
14 | 1
15 | ],
16 | "permissions": [
17 | "send_messages"
18 | ],
19 | "required_cogs": {},
20 | "requirements": [],
21 | "short": "Log bot guild joins/leaves",
22 | "tags": [
23 | "utility",
24 | "logging",
25 | "logs",
26 | "guildlog"
27 | ],
28 | "type": "COG"
29 | }
30 |
--------------------------------------------------------------------------------
/levelup/listeners/members.py:
--------------------------------------------------------------------------------
1 | import logging
2 |
3 | import discord
4 | from redbot.core import commands
5 |
6 | from ..abc import MixinMeta
7 |
8 | log = logging.getLogger("red.levelup.listeners.members")
9 |
10 |
11 | class MemberListener(MixinMeta):
12 | @commands.Cog.listener()
13 | async def on_member_join(self, member: discord.Member):
14 | if member.guild.id not in self.db.configs:
15 | return
16 | conf = self.db.get_conf(member.guild)
17 | if not conf.enabled:
18 | return
19 | added, removed = await self.ensure_roles(member, conf, "Member rejoined")
20 | if added:
21 | log.info(f"Added {len(added)} roles to {member} in {member.guild}")
22 | if removed:
23 | log.info(f"Removed {len(removed)} roles from {member} in {member.guild}")
24 |
--------------------------------------------------------------------------------
/assistantutils/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Assistant Utils adds pre-baked functions to the Assistant cog, allowing extended functionality.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog does not store any information.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing! This cog does not have any commands, but registers pre-baked functions with the Assistant cog",
8 | "min_bot_version": "3.5.3",
9 | "min_python_version": [3, 9, 1],
10 | "permissions": ["administrator"],
11 | "required_cogs": {
12 | "assistant": "https://github.com/vertyco/vrt-cogs"
13 | },
14 | "requirements": ["duckduckgo_search", "pytz"],
15 | "short": "Extended functionality for Assistant",
16 | "tags": ["assistant", "ai", "chat", "functions", "utility"],
17 | "type": "COG"
18 | }
19 |
--------------------------------------------------------------------------------
/appeals/abc.py:
--------------------------------------------------------------------------------
1 | import typing as t
2 | from abc import ABC, ABCMeta, abstractmethod
3 |
4 | import discord
5 | from discord.ext.commands.cog import CogMeta
6 | from piccolo.engine.sqlite import SQLiteEngine
7 | from redbot.core.bot import Red
8 |
9 | from .db.utils import DBUtils
10 |
11 |
12 | class CompositeMetaClass(CogMeta, ABCMeta):
13 | """Type detection"""
14 |
15 |
16 | class MixinMeta(ABC):
17 | """Type hinting"""
18 |
19 | def __init__(self, *_args):
20 | self.bot: Red
21 | self.db: SQLiteEngine | None
22 | self.db_utils: DBUtils
23 |
24 | @abstractmethod
25 | async def initialize(self) -> None:
26 | raise NotImplementedError
27 |
28 | @abstractmethod
29 | async def conditions_met(self, guild: discord.Guild) -> t.Tuple[bool, t.Optional[str]]:
30 | raise NotImplementedError
31 |
--------------------------------------------------------------------------------
/autodocs/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Generate documentation for your cogs automatically",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog does not store data about users.",
8 | "hidden": false,
9 | "install_msg": "Thank you for installing Autodocs!\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/autodocs/README.md",
10 | "min_bot_version": "3.5.0",
11 | "min_python_version": [
12 | 3,
13 | 9,
14 | 1
15 | ],
16 | "permissions": [],
17 | "required_cogs": {},
18 | "requirements": [
19 | "ujson",
20 | "msgpack",
21 | "pandas"
22 | ],
23 | "short": "EZ Cog Doc Generation",
24 | "tags": [
25 | "utility",
26 | "docs",
27 | "documentation",
28 | "automatic",
29 | "autodocs"
30 | ],
31 | "type": "COG"
32 | }
33 |
--------------------------------------------------------------------------------
/extendedeconomy/common/generator.py:
--------------------------------------------------------------------------------
1 | from io import BytesIO
2 |
3 | import discord
4 | import plotly.express as px
5 |
6 |
7 | def generate_pie_chart(labels: list, sizes: list, title: str) -> discord.File:
8 | fig = px.pie(
9 | names=labels,
10 | values=sizes,
11 | title=title,
12 | hole=0.3,
13 | )
14 |
15 | marker = dict(line=dict(color="#ffffff", width=2))
16 | fig.update_traces(textposition="inside", textinfo="percent+label", marker=marker)
17 | fig.update_layout(
18 | font_color="rgb(255,255,255)",
19 | font_size=20,
20 | plot_bgcolor="rgba(0,0,0,0)",
21 | paper_bgcolor="rgba(0,0,0,0)",
22 | )
23 |
24 | buffer = BytesIO()
25 | fig.write_image(buffer, format="webp", scale=2)
26 | buffer.seek(0)
27 | return discord.File(buffer, filename="pie.webp")
28 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | aiocache
2 | aiohttp>=3.9.5
3 | aiosmtplib
4 | aiosqlite
5 | apscheduler
6 | asyncpg
7 | chat-exporter
8 | chromadb
9 | colorgram.py
10 | deepl
11 | duckduckgo_search
12 | emoji
13 | fastapi
14 | googletrans-py
15 | httpx
16 | json5
17 | kaleido
18 | msgpack
19 | numpy
20 | openai
21 | openai>=1.99.2
22 | openpyxl
23 | pandas
24 | piccolo
25 | piccolo>=1.0.0
26 | piccolo[postgres]
27 | piccolo[sqlite]
28 | Pillow
29 | plotly
30 | psutil
31 | py-cpuinfo
32 | pydantic
33 | pydantic>=2.11,<2.12
34 | pydantic[email]
35 | Pympler
36 | PyMuPDF
37 | pypandoc_binary
38 | python-decouple
39 | python-dotenv
40 | python-multipart
41 | pytz
42 | redbot-orm
43 | requests
44 | sentry-sdk
45 | sentry_sdk
46 | speedtest-cli>=2.1.3
47 | tabulate
48 | tenacity
49 | tiktoken>=0.9.0
50 | ujson
51 | utils
52 | uvicorn
53 | xbox-webapi
54 | xlrd
55 | xmltojson
56 |
--------------------------------------------------------------------------------
/appeals/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Turn a secondary Discord into a ban appeal server, with intuitive and customizable settings.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog stores Discord IDs and ban appeal data, which includes user responses to ban appeal questions.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing Appeals! Type `[p]appeals help` to get started.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/appeals/README.md",
8 | "min_bot_version": "3.5.3",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": ["ban_members"],
11 | "required_cogs": {},
12 | "requirements": ["piccolo[sqlite]", "aiosqlite"],
13 | "short": "Intuitive ban appeal system.",
14 | "tags": ["appeal", "appeals", "ban", "bans", "vrt", "vert", "banappeals"],
15 | "type": "COG"
16 | }
17 |
--------------------------------------------------------------------------------
/levelup/generator/tenor/locales/ru-RU.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: Russian\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: ru\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/generator/tenor/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 194\n"
18 | "Language: ru_RU\n"
19 |
20 |
--------------------------------------------------------------------------------
/nonuke/common/models.py:
--------------------------------------------------------------------------------
1 |
2 | import discord
3 |
4 | from . import Base
5 |
6 |
7 | class GuildSettings(Base):
8 | enabled: bool = False
9 | log: int = 0 # Log channel
10 | cooldown: int = 10 # Seconds between actions
11 | overload: int = 3 # Actions within cooldown time
12 | dm: bool = False # Whether to DM the user the bot takes action on
13 | action: str = "notify" # Valid types are 'kick', 'ban', 'strip', and 'notify'
14 | ignore_bots: bool = False # Whether to ignore other bots
15 | whitelist: list[int] = [] # Whitelist of trusted users(or bots)
16 |
17 |
18 | class DB(Base):
19 | configs: dict[int, GuildSettings] = {}
20 |
21 | def get_conf(self, guild: discord.Guild | int) -> GuildSettings:
22 | gid = guild if isinstance(guild, int) else guild.id
23 | return self.configs.setdefault(gid, GuildSettings())
24 |
--------------------------------------------------------------------------------
/metrics/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "The successor to EconomyTrack, Metrics is a powerful cog for tracking and visualizing server statistics over time, including economy data and member activity.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog does not store any end user data.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing Metrics! Use `[p]help Metrics` to get started.",
8 | "min_bot_version": "3.5.22",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": [],
11 | "required_cogs": {},
12 | "requirements": ["redbot-orm", "pytz", "pandas", "plotly", "kaleido"],
13 | "short": "Track and visualize server statistics over time.",
14 | "tags": [
15 | "economy",
16 | "metrics",
17 | "statistics",
18 | "tracking",
19 | "visualization"
20 | ],
21 | "type": "COG"
22 | }
23 |
--------------------------------------------------------------------------------
/miner/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Pickaxe in hand, fortune awaits. Mine rocks with your friends! This is a simple incremental-ish game where you mine rocks to earn resources that you use to upgrade your tools and thus, increase your mining efficiency.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog does not store any personal data.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing! If you dont have postgres setup, use `[p]minerdb postgres` to configure the connection.",
8 | "min_bot_version": "3.5.21",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": [],
11 | "required_cogs": {},
12 | "requirements": ["piccolo[postgres]", "asyncpg", "aiocache"],
13 | "short": "Pickaxe in hand, fortune awaits",
14 | "tags": ["mining", "miner", "economy", "games", "game"],
15 | "type": "COG"
16 | }
17 |
--------------------------------------------------------------------------------
/fluent/abc.py:
--------------------------------------------------------------------------------
1 | import typing as t
2 | from abc import ABC, ABCMeta, abstractmethod
3 |
4 | import discord
5 | from discord.ext.commands.cog import CogMeta
6 | from redbot.core import Config
7 | from redbot.core.bot import Red
8 |
9 | from .common.api import Result
10 | from .common.models import TranslateButton
11 |
12 |
13 | class CompositeMetaClass(CogMeta, ABCMeta):
14 | """Type detection"""
15 |
16 |
17 | class MixinMeta(ABC):
18 | """Type hinting"""
19 |
20 | def __init__(self, *_args):
21 | self.bot: Red
22 | self.config: Config
23 |
24 | @abstractmethod
25 | async def translate(self, msg: str, dest: str, force: bool = False) -> t.Optional[Result]:
26 | raise NotImplementedError
27 |
28 | @abstractmethod
29 | async def get_buttons(self, guild: discord.Guild) -> list[TranslateButton]:
30 | raise NotImplementedError
31 |
--------------------------------------------------------------------------------
/bankevents/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Dispatches events when different bank transactions occur, such as when a user deposits credits, withdraws credits, transfers credits, or runs payday.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog does not store end user data.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing!\n**WARNING:** This cog modifies Red's bank methods by wrapping them in a method that dispatches the event. If you are not okay with that, please uninstall this cog.",
8 | "min_bot_version": "3.5.0",
9 | "min_python_version": [3, 9, 0],
10 | "permissions": [],
11 | "required_cogs": {},
12 | "requirements": [],
13 | "short": "Bank transaction listener events for 3rd party cogs",
14 | "tags": ["bank", "events", "listeners", "economy", "developers", "economy"],
15 | "type": "COG"
16 | }
17 |
--------------------------------------------------------------------------------
/referrals/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Incentivise users to invite others to your server with a referral system! Configure rewards for both the inviter and the invitee, and track how many people each user has invited.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog stores Discord IDs to track referrals. It does not store any other personal data.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing Referrals! Type `[p]help Referrals` to get started.",
8 | "min_bot_version": "3.5.3",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": [],
11 | "required_cogs": {},
12 | "requirements": ["piccolo", "piccolo[sqlite]", "aiosqlite"],
13 | "short": "Simple referral system with economy",
14 | "tags": ["referrals", "referral", "refer", "invites", "economy", "currency", "credits"],
15 | "type": "COG"
16 | }
17 |
--------------------------------------------------------------------------------
/vrtutils/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Assorted utility commands for viewing bot stats and users",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog is stateless and retains no user or server data.",
8 | "hidden": false,
9 | "install_msg": "Thank you for installing!\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/vrtutils/README.md",
10 | "min_bot_version": "3.5.0",
11 | "min_python_version": [3, 9, 1],
12 | "permissions": [],
13 | "required_cogs": {},
14 | "requirements": [
15 | "py-cpuinfo",
16 | "speedtest-cli>=2.1.3",
17 | "chat-exporter"
18 | ],
19 | "short": "Assorted utility commands",
20 | "tags": [
21 | "utility",
22 | "bot",
23 | "botstats",
24 | "botinfo",
25 | "serverstats",
26 | "ping",
27 | "latency"
28 | ],
29 | "type": "COG"
30 | }
31 |
--------------------------------------------------------------------------------
/nobot/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Filter certain messages from other bots",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog only listens for other bots, it is probably not a good idea to use this on large or public bots.",
8 | "hidden": false,
9 | "install_msg": "Thank you for installing NoBot! Type `[p]nobot` to view the list of commands.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/nobot/README.md",
10 | "min_bot_version": "3.4.0",
11 | "min_python_version": [
12 | 3,
13 | 9,
14 | 1
15 | ],
16 | "permissions": [
17 | "manage_messages",
18 | "send_messages",
19 | "add_reactions"
20 | ],
21 | "required_cogs": {},
22 | "requirements": [],
23 | "short": "Filter bot messages",
24 | "tags": [
25 | "utility",
26 | "nobot"
27 | ],
28 | "type": "COG"
29 | }
30 |
--------------------------------------------------------------------------------
/levelup/tasks/locales/ko-KR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: Korean\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=1; plural=0;\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: ko\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/tasks/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 188\n"
18 | "Language: ko_KR\n"
19 |
20 | #: levelup\tasks\__init__.py:6
21 | #, docstring
22 | msgid "\n"
23 | " Subclass all shared metaclassed parts of the cog\n\n"
24 | " This includes all task loops for LevelUp\n"
25 | " "
26 | msgstr ""
27 |
28 |
--------------------------------------------------------------------------------
/levelup/tasks/locales/de-DE.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: German\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: de\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/tasks/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 188\n"
18 | "Language: de_DE\n"
19 |
20 | #: levelup\tasks\__init__.py:6
21 | #, docstring
22 | msgid "\n"
23 | " Subclass all shared metaclassed parts of the cog\n\n"
24 | " This includes all task loops for LevelUp\n"
25 | " "
26 | msgstr ""
27 |
28 |
--------------------------------------------------------------------------------
/levelup/tasks/locales/fr-FR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: French\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: fr\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/tasks/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 188\n"
18 | "Language: fr_FR\n"
19 |
20 | #: levelup\tasks\__init__.py:6
21 | #, docstring
22 | msgid "\n"
23 | " Subclass all shared metaclassed parts of the cog\n\n"
24 | " This includes all task loops for LevelUp\n"
25 | " "
26 | msgstr ""
27 |
28 |
--------------------------------------------------------------------------------
/levelup/tasks/locales/tr-TR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: Turkish\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: tr\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/tasks/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 188\n"
18 | "Language: tr_TR\n"
19 |
20 | #: levelup\tasks\__init__.py:6
21 | #, docstring
22 | msgid "\n"
23 | " Subclass all shared metaclassed parts of the cog\n\n"
24 | " This includes all task loops for LevelUp\n"
25 | " "
26 | msgstr ""
27 |
28 |
--------------------------------------------------------------------------------
/events/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Host and manage events in your server with a variety of customizable entry options",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog does not persistently store data about users.",
8 | "hidden": false,
9 | "install_msg": "Thank you for installing!\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/events/README.md",
10 | "min_bot_version": "3.4.0",
11 | "min_python_version": [
12 | 3,
13 | 9,
14 | 1
15 | ],
16 | "permissions": [
17 | "embed_links"
18 | ],
19 | "required_cogs": {},
20 | "requirements": [
21 | "ujson",
22 | "msgpack",
23 | "aiocache"
24 | ],
25 | "short": "Host and manage events in your server",
26 | "tags": [
27 | "event",
28 | "events",
29 | "submissions",
30 | "event manager"
31 | ],
32 | "type": "COG"
33 | }
34 |
--------------------------------------------------------------------------------
/guildlock/common/locales/messages.pot:
--------------------------------------------------------------------------------
1 | #
2 | msgid ""
3 | msgstr ""
4 | "Project-Id-Version: PACKAGE VERSION\n"
5 | "POT-Creation-Date: 2024-02-08 18:30-0500\n"
6 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
7 | "Last-Translator: FULL NAME \n"
8 | "Language-Team: LANGUAGE \n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "Generated-By: redgettext 3.4.2\n"
13 |
14 | #: common\views.py:13
15 | msgid "Yes"
16 | msgstr ""
17 |
18 | #: common\views.py:14
19 | msgid "No"
20 | msgstr ""
21 |
22 | #: common\views.py:20 common\views.py:82
23 | msgid "This isn't your menu!"
24 | msgstr ""
25 |
26 | #: common\views.py:43
27 | msgid "Select a Page"
28 | msgstr ""
29 |
30 | #: common\views.py:46
31 | msgid "Enter Page Number"
32 | msgstr ""
33 |
34 | #: common\views.py:176
35 | msgid "Page must be a number!"
36 | msgstr ""
37 |
--------------------------------------------------------------------------------
/levelup/tasks/locales/pt-PT.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: Portuguese\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: pt-PT\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/tasks/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 188\n"
18 | "Language: pt_PT\n"
19 |
20 | #: levelup\tasks\__init__.py:6
21 | #, docstring
22 | msgid "\n"
23 | " Subclass all shared metaclassed parts of the cog\n\n"
24 | " This includes all task loops for LevelUp\n"
25 | " "
26 | msgstr ""
27 |
28 |
--------------------------------------------------------------------------------
/guildlock/common/models.py:
--------------------------------------------------------------------------------
1 | import orjson
2 | from pydantic import VERSION, BaseModel
3 |
4 |
5 | class FriendlyBase(BaseModel):
6 | def model_dump(self, *args, **kwargs):
7 | if VERSION >= "2.0.1":
8 | return super().model_dump(*args, **kwargs)
9 | if kwargs.pop("mode", "") == "json":
10 | return orjson.loads(super().json(*args, **kwargs))
11 | return super().dict(*args, **kwargs)
12 |
13 | @classmethod
14 | def model_validate(cls, obj, *args, **kwargs):
15 | if VERSION >= "2.0.1":
16 | return super().model_validate(obj, *args, **kwargs)
17 | return super().parse_obj(obj, *args, **kwargs)
18 |
19 |
20 | class DB(FriendlyBase):
21 | limit: int = 0
22 | log_channel: int = 0
23 | log_guild: int = 0
24 | min_members: int = 0
25 | bot_ratio: int = 0
26 | whitelist: list[int] = []
27 | blacklist: list[int] = []
28 |
--------------------------------------------------------------------------------
/levelup/views/locales/messages.pot:
--------------------------------------------------------------------------------
1 | #
2 | msgid ""
3 | msgstr ""
4 | "Project-Id-Version: PACKAGE VERSION\n"
5 | "POT-Creation-Date: 2025-11-27 13:02-0500\n"
6 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
7 | "Last-Translator: FULL NAME \n"
8 | "Language-Team: LANGUAGE \n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "Generated-By: redgettext 3.4.2\n"
13 |
14 | #: levelup\views\dynamic_menu.py:20
15 | msgid "Enter Search Query or Page"
16 | msgstr ""
17 |
18 | #: levelup\views\dynamic_menu.py:80
19 | #, docstring
20 | msgid "Call this to start and refresh the menu."
21 | msgstr ""
22 |
23 | #: levelup\views\dynamic_menu.py:241 levelup\views\dynamic_menu.py:285
24 | msgid "No page found matching that query."
25 | msgstr ""
26 |
27 | #: levelup\views\dynamic_menu.py:289
28 | msgid "Found closest match of {}%"
29 | msgstr ""
30 |
--------------------------------------------------------------------------------
/setools/common/__init__.py:
--------------------------------------------------------------------------------
1 | import logging
2 |
3 | import orjson
4 | from pydantic import VERSION, BaseModel
5 |
6 | log = logging.getLogger("red.vrt.setools.common")
7 |
8 |
9 | class Base(BaseModel):
10 | def model_dump(self, *args, **kwargs):
11 | if VERSION >= "2.0.1":
12 | return super().model_dump(*args, **kwargs)
13 | if kwargs.pop("mode", "") == "json":
14 | return orjson.loads(super().json(*args, **kwargs))
15 | return super().dict(*args, **kwargs)
16 |
17 | @classmethod
18 | def model_validate(cls, obj, *args, **kwargs):
19 | for key in obj.keys():
20 | if key not in cls.__annotations__:
21 | log.error(f"Unknown key {key} in payload for {cls.__name__}")
22 | if VERSION >= "2.0.1":
23 | return super().model_validate(obj, *args, **kwargs)
24 | return super().parse_obj(obj, *args, **kwargs)
25 |
--------------------------------------------------------------------------------
/taskr/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Schedule commands easily with an intuitive interface and an optional AI helper for setting up tasks.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog stores user and guild IDs for the purpose of storing tasks.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing Taskr! Type `[p]help Taskr` to get started.",
8 | "min_bot_version": "3.5.3",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": [],
11 | "required_cogs": {},
12 | "requirements": ["pydantic>=2.11,<2.12", "apscheduler", "openai", "pytz"],
13 | "short": "Schedule bot commands within a simple menu",
14 | "tags": [
15 | "taskr",
16 | "schedule",
17 | "scheduler",
18 | "tasks",
19 | "fifo",
20 | "queue",
21 | "utility",
22 | "commands",
23 | "automation",
24 | "vert"
25 | ],
26 | "type": "COG"
27 | }
28 |
--------------------------------------------------------------------------------
/metrics/build.py:
--------------------------------------------------------------------------------
1 | from __future__ import annotations
2 |
3 | import asyncio
4 | from pathlib import Path
5 |
6 | from dotenv import load_dotenv
7 | from redbot_orm import create_migrations, diagnose_issues
8 |
9 | load_dotenv()
10 |
11 |
12 | ROOT = Path(__file__).parent
13 |
14 |
15 | async def main() -> None:
16 | description = input("Enter a description for the migration: ")
17 |
18 | try:
19 | result = await create_migrations(
20 | ROOT,
21 | trace=True,
22 | description=description,
23 | is_shell=True,
24 | )
25 | if not result:
26 | print("No migration changes detected.")
27 | return
28 | print(result)
29 | except Exception as exc:
30 | print(f"Error creating migrations: {exc}")
31 | print(await diagnose_issues(ROOT))
32 |
33 |
34 | if __name__ == "__main__":
35 | asyncio.run(main())
36 |
--------------------------------------------------------------------------------
/cartographer/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco" ],
3 | "description": "Create backups of your Discord server and restore them easily",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog stores information about your entire discord server including user IDs.\n**NOTE**\nRestoring backups can be rate-limit intensive, and may take quite a while.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing! Use the `[p]cargorapherset` command to view the settings.\n\nTHIS COG IS NOT INTENDED FOR PUBLIC BOTS! SERVER BACKUPS TAKE UP A LOT OF SPACE AND CAN BE RATE-LIMIT INTENSIVE!",
8 | "min_bot_version": "3.5.3",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": ["administrator"],
11 | "required_cogs": {},
12 | "requirements": ["pydantic>=2.11,<2.12", "tenacity"],
13 | "short": "Discord Server Backup/Restore",
14 | "tags": ["backup", "backups", "restore", "cartographer"],
15 | "type": "COG"
16 | }
17 |
--------------------------------------------------------------------------------
/metrics/abc.py:
--------------------------------------------------------------------------------
1 | from abc import ABC, ABCMeta, abstractmethod
2 |
3 | from discord.ext.commands.cog import CogMeta
4 | from piccolo.engine.postgres import PostgresEngine
5 | from piccolo.engine.sqlite import SQLiteEngine
6 | from redbot.core.bot import Red
7 |
8 | from .common.utils import DBUtils
9 |
10 |
11 | class CompositeMetaClass(CogMeta, ABCMeta):
12 | """Type detection"""
13 |
14 |
15 | class MixinMeta(ABC):
16 | """Type hinting"""
17 |
18 | def __init__(self, *_args):
19 | self.bot: Red
20 | self.db: SQLiteEngine | PostgresEngine | None
21 | self.db_utils: DBUtils
22 |
23 | @abstractmethod
24 | async def initialize(self) -> None:
25 | raise NotImplementedError
26 |
27 | @abstractmethod
28 | def db_active(self) -> bool:
29 | raise NotImplementedError
30 |
31 | @abstractmethod
32 | def change_snapshot_interval(self, minutes: int) -> None:
33 | raise NotImplementedError
34 |
--------------------------------------------------------------------------------
/commandlock/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": ["Vertyco"],
3 | "description": "Lock command or cog usage to specific channels and redirect users to the correct ones.",
4 | "disabled": false,
5 | "end_user_data_statement": "This cog does not store data about end users.",
6 | "hidden": false,
7 | "install_msg": "Thank you for installing! run `[p]commandlock` to get started.\n\nThis cog is a derivative work inspired by the ChannelRedirect cog by SinbadCogs (`https://github.com/mikeshardmind/SinbadCogs`)",
8 | "min_bot_version": "3.5.3",
9 | "min_python_version": [3, 10, 0],
10 | "permissions": ["manage_guild"],
11 | "required_cogs": {},
12 | "requirements": [],
13 | "short": "Lock command or cog usage to specific channels.",
14 | "tags": [
15 | "utilities",
16 | "utility",
17 | "redirect",
18 | "channelredirect",
19 | "commandlock",
20 | "commands",
21 | "moderation",
22 | "mod",
23 | "admin"
24 | ],
25 | "type": "COG"
26 | }
27 |
--------------------------------------------------------------------------------
/guildlock/common/abc.py:
--------------------------------------------------------------------------------
1 | from abc import ABCMeta, abstractmethod
2 |
3 | import discord
4 | from discord.ext.commands.cog import CogMeta
5 | from redbot.core.bot import Red
6 |
7 | from .models import DB
8 |
9 |
10 | class CompositeMetaClass(CogMeta, ABCMeta):
11 | """Type detection"""
12 |
13 |
14 | class MixinMeta(metaclass=ABCMeta):
15 | """Type hinting"""
16 |
17 | bot: Red
18 | db: DB
19 |
20 | @abstractmethod
21 | def notify_reason(self, log_type: str, guild: discord.Guild) -> str:
22 | raise NotImplementedError
23 |
24 | @abstractmethod
25 | def log_reason(self, log_type: str, guild: discord.Guild) -> str:
26 | raise NotImplementedError
27 |
28 | @abstractmethod
29 | async def notify_guild(self, log_type: str, guild: discord.Guild):
30 | raise NotImplementedError
31 |
32 | @abstractmethod
33 | async def log_leave(self, reason: str, guild: discord.Guild):
34 | raise NotImplementedError
35 |
--------------------------------------------------------------------------------
/levelup/tasks/locales/hr-HR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: vrt-cogs\n"
4 | "POT-Creation-Date: 2024-06-18 16:29-0400\n"
5 | "PO-Revision-Date: 2024-12-03 14:59\n"
6 | "Last-Translator: \n"
7 | "Language-Team: Croatian\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Generated-By: redgettext 3.4.2\n"
12 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
13 | "X-Crowdin-Project: vrt-cogs\n"
14 | "X-Crowdin-Project-ID: 550681\n"
15 | "X-Crowdin-Language: hr\n"
16 | "X-Crowdin-File: /[vertyco.vrt-cogs] main/levelup/tasks/locales/messages.pot\n"
17 | "X-Crowdin-File-ID: 188\n"
18 | "Language: hr_HR\n"
19 |
20 | #: levelup\tasks\__init__.py:6
21 | #, docstring
22 | msgid "\n"
23 | " Subclass all shared metaclassed parts of the cog\n\n"
24 | " This includes all task loops for LevelUp\n"
25 | " "
26 | msgstr ""
27 |
28 |
--------------------------------------------------------------------------------
/upgradechat/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": [
3 | "Vertyco"
4 | ],
5 | "description": "Upgrade.Chat integration for purchasing economy credits directly",
6 | "disabled": false,
7 | "end_user_data_statement": "This cog does not store any personal data of users.",
8 | "hidden": false,
9 | "install_msg": "**NOTE:** You are expected to know how to use Upgrade.Chat and create products ect.. This cog only guides you on how to create/set your API tokens.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/upgradechat/README.md",
10 | "min_bot_version": "3.4.0",
11 | "min_python_version": [
12 | 3,
13 | 10,
14 | 0
15 | ],
16 | "permissions": [],
17 | "required_cogs": {},
18 | "requirements": [],
19 | "short": "Upgrade.Chat API Economy Integration",
20 | "tags": [
21 | "utility",
22 | "upgrade",
23 | "chat",
24 | "upgrade.chat",
25 | "economy",
26 | "supporter",
27 | "donate",
28 | "donations",
29 | "bank"
30 | ],
31 | "type": "COG"
32 | }
33 |
--------------------------------------------------------------------------------
/nobot/README.md:
--------------------------------------------------------------------------------
1 | # NoBot Help
2 |
3 | Filter messages from other bots
Some "Free" bots spam ads and links when using their commands, this cog fixes that. Add a bot to the watchlist and add phrases to look for and if that phrase is found in the other bot's message, this cog will delete them.
4 |
5 | # nobot
6 | - Usage: `[p]nobot `
7 |
8 | Main setup command for NoBot
9 |
10 | ## nobot addbot
11 | - Usage: `[p]nobot addbot `
12 |
13 | Add a bot to the filter list
14 |
15 | ## nobot delfilter
16 | - Usage: `[p]nobot delfilter `
17 |
18 | Delete a filter
19 |
20 | ## nobot view
21 | - Usage: `[p]nobot view `
22 |
23 | View NoBot settings
24 |
25 | ## nobot addfilter
26 | - Usage: `[p]nobot addfilter `
27 |
28 | Add text context to match against the bot filter list, use phrases that match what the bot sends exactly
29 |
30 | ## nobot delbot
31 | - Usage: `[p]nobot delbot `
32 |
33 | Remove a bot from the filter list