├── metrics ├── db │ ├── __init__.py │ ├── piccolo_app.py │ └── piccolo_conf.py ├── common │ └── __init__.py ├── views │ └── __init__.py ├── commands │ └── __init__.py ├── __init__.py ├── tasks │ └── __init__.py ├── info.json ├── build.py └── abc.py ├── miner ├── db │ ├── __init__.py │ ├── piccolo_app.py │ ├── piccolo_conf.py │ └── migrations │ │ ├── miner_2025_08_23t20_46_46_362438.py │ │ ├── miner_2025_09_10t11_35_25_981437.py │ │ └── miner_2025_09_09t20_50_38_388219.py ├── views │ ├── __init__.py │ └── upgrade_view.py ├── common │ └── __init__.py ├── listeners │ ├── __init__.py │ └── member.py ├── commands │ └── __init__.py ├── __init__.py ├── tasks │ └── __init__.py ├── engine │ ├── __init__.py │ └── errors.py ├── info.json ├── build.py └── abc.py ├── appeals ├── common │ ├── __init__.py │ └── checks.py ├── views │ └── __init__.py ├── engine │ ├── errors.py │ └── __init__.py ├── commands │ └── __init__.py ├── db │ ├── piccolo_conf.py │ ├── piccolo_app.py │ ├── utils.py │ ├── __init__.py │ └── migrations │ │ ├── appeals_2024_12_07t15_29_49_006538.py │ │ └── appeals_2025_02_14t13_21_03_690552.py ├── __init__.py ├── listeners │ └── __init__.py ├── build.py ├── abc.py └── info.json ├── cowclicker ├── db │ ├── __init__.py │ ├── piccolo_app.py │ ├── migrations │ │ └── cowclicker_2024_08_28t10_29_52_671440.py │ ├── piccolo_conf.py │ └── tables.py ├── views │ └── __init__.py ├── common │ ├── __init__.py │ └── const.py ├── dev-requirements.txt ├── engine │ ├── errors.py │ └── __init__.py ├── commands │ └── __init__.py ├── __init__.py ├── abc.py ├── build.py └── info.json ├── gmail ├── common │ ├── __init__.py │ └── models.py ├── commands │ └── __init__.py ├── __init__.py ├── abc.py ├── info.json └── views │ └── __init__.py ├── profiler ├── views │ └── __init__.py ├── commands │ └── __init__.py ├── __init__.py ├── common │ ├── __init__.py │ └── generator.py └── info.json ├── referrals ├── common │ ├── __init__.py │ └── checks.py ├── views │ └── __init__.py ├── engine │ ├── errors.py │ └── __init__.py ├── commands │ └── __init__.py ├── db │ ├── piccolo_conf.py │ ├── piccolo_app.py │ ├── __init__.py │ └── utils.py ├── __init__.py ├── abc.py ├── build.py └── info.json ├── assistantutils ├── common │ ├── __init__.py │ └── utils.py ├── README.md ├── abc.py ├── __init__.py └── info.json ├── bankevents ├── overrides │ └── __init__.py ├── __init__.py ├── abc.py ├── README.md └── info.json ├── extendedeconomy ├── views │ ├── __init__.py │ └── confirm.py ├── commands │ └── __init__.py ├── __init__.py ├── common │ ├── generator.py │ ├── __init__.py │ └── parser.py ├── info.json └── abc.py ├── levelup ├── generator │ ├── __init__.py │ ├── styles │ │ └── __init__.py │ ├── pilmojisrc │ │ └── __init__.py │ ├── requirements.txt │ └── tenor │ │ └── locales │ │ ├── messages.pot │ │ ├── ko-KR.po │ │ ├── fr-FR.po │ │ ├── de-DE.po │ │ ├── es-ES.po │ │ ├── tr-TR.po │ │ ├── pt-PT.po │ │ ├── hr-HR.po │ │ └── ru-RU.po ├── dashboard │ ├── static │ │ └── css │ │ │ └── settings.css │ └── templates │ │ └── settings.html ├── data │ ├── fonts │ │ ├── Halo.ttf │ │ ├── Party.ttf │ │ ├── Space.ttf │ │ ├── Vogue.ttf │ │ ├── Avenger.ttf │ │ ├── Chalice.ttf │ │ ├── Disney.ttf │ │ ├── Pokemon.ttf │ │ ├── Roboto.ttf │ │ ├── Truckin.ttf │ │ ├── Vampire.ttf │ │ ├── Varsity.ttf │ │ ├── BebasNeue.ttf │ │ ├── Bubblegum.ttf │ │ ├── Hogwarts.ttf │ │ ├── OldLondon.ttf │ │ ├── Runescape.ttf │ │ ├── StarWars.ttf │ │ └── KrabbyPatty.ttf │ ├── stock │ │ ├── dnd.webp │ │ ├── idle.webp │ │ ├── star.webp │ │ ├── online.webp │ │ ├── offline.webp │ │ ├── streaming.webp │ │ ├── colortable.webp │ │ ├── defaultpfp.webp │ │ ├── profile-assets │ │ │ ├── dnd.png │ │ │ ├── idle.png │ │ │ ├── star.png │ │ │ ├── offline.png │ │ │ ├── online.png │ │ │ ├── defaultpfp.png │ │ │ └── streaming.png │ │ ├── rs-assets │ │ │ ├── rs-star.webp │ │ │ ├── rs-swords.webp │ │ │ ├── rs-diamond.webp │ │ │ └── runescapeui.xcf │ │ ├── runescapeui_nogold.webp │ │ ├── runescapeui_noicons.webp │ │ └── runescapeui_withgold.webp │ └── backgrounds │ │ ├── card01.webp │ │ ├── card02.webp │ │ ├── card03.webp │ │ ├── card04.webp │ │ ├── card05.webp │ │ ├── card06.webp │ │ ├── card07.webp │ │ ├── card08.webp │ │ ├── card09.webp │ │ ├── card10.webp │ │ ├── card11.webp │ │ ├── card12.webp │ │ ├── card13.webp │ │ ├── card14.webp │ │ ├── card15.webp │ │ ├── card16.webp │ │ ├── card17.webp │ │ ├── card18.webp │ │ ├── card19.webp │ │ ├── card20.webp │ │ ├── card21.webp │ │ ├── card22.webp │ │ ├── card23.webp │ │ ├── card24.webp │ │ ├── card25.webp │ │ ├── card26.webp │ │ ├── card27.webp │ │ ├── card28.webp │ │ ├── card29.webp │ │ ├── card30.webp │ │ ├── card31.webp │ │ ├── card32.webp │ │ ├── card33.webp │ │ ├── card34.webp │ │ ├── card35.webp │ │ └── card36.webp ├── common │ └── __init__.py ├── __init__.py ├── tasks │ ├── __init__.py │ └── locales │ │ ├── messages.pot │ │ ├── ko-KR.po │ │ ├── de-DE.po │ │ ├── fr-FR.po │ │ ├── tr-TR.po │ │ ├── pt-PT.po │ │ ├── hr-HR.po │ │ ├── es-ES.po │ │ └── ru-RU.po ├── shared │ └── __init__.py ├── listeners │ ├── __init__.py │ ├── guild.py │ ├── members.py │ └── locales │ │ └── messages.pot ├── commands │ └── __init__.py ├── views │ └── locales │ │ ├── messages.pot │ │ ├── ko-KR.po │ │ ├── de-DE.po │ │ ├── fr-FR.po │ │ ├── es-ES.po │ │ ├── tr-TR.po │ │ ├── pt-PT.po │ │ ├── hr-HR.po │ │ └── ru-RU.po └── info.json ├── setools ├── vragepy │ └── version.py ├── commands │ └── __init__.py ├── __init__.py ├── abc.py ├── tasks │ └── __init__.py ├── info.json └── common │ └── __init__.py ├── pytest.ini ├── .isort.cfg ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md └── ASSETS │ └── Bottom_down.svg ├── pupper ├── views │ └── __init__.py ├── __init__.py └── info.json ├── crafter ├── README.md ├── __init__.py └── info.json ├── guildlock ├── commands │ └── __init__.py ├── common │ ├── __init__.py │ ├── locales │ │ ├── messages.pot │ │ ├── ko-KR.po │ │ ├── fr-FR.po │ │ ├── tr-TR.po │ │ ├── de-DE.po │ │ ├── pt-PT.po │ │ ├── hr-HR.po │ │ ├── es-ES.po │ │ └── ru-RU.po │ ├── models.py │ └── abc.py ├── __init__.py └── info.json ├── crowdin.yml ├── taskr ├── commands │ └── __init__.py ├── __init__.py ├── info.json └── abc.py ├── assistant ├── commands │ └── __init__.py ├── __init__.py └── example-funcs │ ├── get_date.py │ └── get_member_balance.py ├── nonuke ├── __init__.py ├── abc.py ├── common │ ├── __init__.py │ └── models.py └── info.json ├── ideaboard ├── commands │ └── __init__.py ├── __init__.py ├── common │ └── __init__.py ├── abc.py └── info.json ├── autodocs ├── __init__.py └── info.json ├── tickets ├── commands │ └── __init__.py ├── __init__.py ├── abc.py ├── info.json └── locales │ ├── messages.pot │ ├── hr-HR.po │ └── ko-KR.po ├── xtools ├── __init__.py └── info.json ├── cartographer ├── __init__.py ├── info.json └── common │ └── __init__.py ├── fluent ├── __init__.py ├── abc.py └── info.json ├── bankdecay ├── __init__.py ├── common │ ├── scheduler.py │ └── __init__.py ├── abc.py ├── info.json └── locales │ └── messages.pot ├── whitelabel ├── __init__.py └── info.json ├── commandlock ├── __init__.py └── info.json ├── meow ├── README.md ├── __init__.py └── info.json ├── hunting ├── __init__.py └── info.json ├── vrtutils ├── abc.py ├── __init__.py ├── commands │ └── __init__.py ├── info.json └── vrtutils.py ├── bankbackup ├── __init__.py ├── README.md └── info.json ├── events ├── __init__.py └── info.json ├── guildlog ├── __init__.py └── info.json ├── nobot ├── __init__.py ├── info.json └── README.md ├── upgradechat ├── __init__.py └── info.json ├── pixl ├── __init__.py └── info.json ├── economytrack ├── __init__.py ├── abc.py ├── info.json └── graph.py ├── emojitracker ├── __init__.py ├── info.json └── README.md ├── info.json ├── requirements.txt ├── LICENSE ├── .pre-commit-config.yaml └── CONTRIBUTING.md /metrics/db/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /miner/db/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /miner/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /appeals/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /appeals/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cowclicker/db/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cowclicker/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gmail/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metrics/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metrics/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /miner/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /profiler/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /referrals/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /referrals/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assistantutils/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bankevents/overrides/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cowclicker/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /extendedeconomy/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /levelup/generator/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /profiler/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /levelup/generator/styles/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /levelup/dashboard/static/css/settings.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cowclicker/dev-requirements.txt: -------------------------------------------------------------------------------- 1 | python-dotenv 2 | -------------------------------------------------------------------------------- /setools/vragepy/version.py: -------------------------------------------------------------------------------- 1 | __version__ = "0.0.1" 2 | -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | filterwarnings = ignore::DeprecationWarning 3 | -------------------------------------------------------------------------------- /.isort.cfg: -------------------------------------------------------------------------------- 1 | [settings] 2 | profile = black 3 | combine_as_imports = true 4 | -------------------------------------------------------------------------------- /levelup/data/fonts/Halo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Halo.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Party.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Party.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Space.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Space.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Vogue.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Vogue.ttf -------------------------------------------------------------------------------- /levelup/data/stock/dnd.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/dnd.webp -------------------------------------------------------------------------------- /levelup/data/stock/idle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/idle.webp -------------------------------------------------------------------------------- /levelup/data/stock/star.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/star.webp -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: vertyco 4 | ko_fi: vertyco 5 | -------------------------------------------------------------------------------- /cowclicker/common/const.py: -------------------------------------------------------------------------------- 1 | COW_IMAGE = "https://upload.wikimedia.org/wikipedia/en/1/1f/Cow_Clicker_cover.png" 2 | -------------------------------------------------------------------------------- /levelup/data/fonts/Avenger.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Avenger.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Chalice.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Chalice.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Disney.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Disney.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Pokemon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Pokemon.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Roboto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Roboto.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Truckin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Truckin.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Vampire.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Vampire.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Varsity.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Varsity.ttf -------------------------------------------------------------------------------- /levelup/data/stock/online.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/online.webp -------------------------------------------------------------------------------- /pupper/views/__init__.py: -------------------------------------------------------------------------------- 1 | from .leaderboard import PupperLeaderboard 2 | 3 | __all__ = ["PupperLeaderboard"] 4 | -------------------------------------------------------------------------------- /levelup/data/fonts/BebasNeue.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/BebasNeue.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Bubblegum.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Bubblegum.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Hogwarts.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Hogwarts.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/OldLondon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/OldLondon.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/Runescape.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/Runescape.ttf -------------------------------------------------------------------------------- /levelup/data/fonts/StarWars.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/StarWars.ttf -------------------------------------------------------------------------------- /levelup/data/stock/offline.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/offline.webp -------------------------------------------------------------------------------- /levelup/data/stock/streaming.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/streaming.webp -------------------------------------------------------------------------------- /levelup/data/fonts/KrabbyPatty.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/fonts/KrabbyPatty.ttf -------------------------------------------------------------------------------- /levelup/data/stock/colortable.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/colortable.webp -------------------------------------------------------------------------------- /levelup/data/stock/defaultpfp.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/defaultpfp.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card01.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card01.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card02.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card02.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card03.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card03.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card04.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card04.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card05.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card05.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card06.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card06.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card07.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card07.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card08.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card08.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card09.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card09.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card10.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card10.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card11.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card11.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card12.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card12.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card13.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card13.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card14.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card14.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card15.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card15.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card16.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card16.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card17.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card18.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card19.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card19.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card20.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card20.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card21.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card21.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card22.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card22.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card23.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card23.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card24.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card24.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card25.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card25.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card26.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card26.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card27.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card27.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card28.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card28.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card29.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card29.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card30.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card30.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card31.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card31.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card32.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card32.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card33.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card33.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card34.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card34.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card35.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card35.webp -------------------------------------------------------------------------------- /levelup/data/backgrounds/card36.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/backgrounds/card36.webp -------------------------------------------------------------------------------- /assistantutils/README.md: -------------------------------------------------------------------------------- 1 | Assistant Utils adds pre-baked functions to the Assistant cog, allowing extended functionality. 2 | 3 | -------------------------------------------------------------------------------- /levelup/common/__init__.py: -------------------------------------------------------------------------------- 1 | # The main database models.py, and Non-class functions and variables that are used across the project 2 | -------------------------------------------------------------------------------- /levelup/data/stock/profile-assets/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/profile-assets/dnd.png -------------------------------------------------------------------------------- /levelup/data/stock/profile-assets/idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/profile-assets/idle.png -------------------------------------------------------------------------------- /levelup/data/stock/profile-assets/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/profile-assets/star.png -------------------------------------------------------------------------------- /levelup/data/stock/rs-assets/rs-star.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/rs-assets/rs-star.webp -------------------------------------------------------------------------------- /levelup/data/stock/rs-assets/rs-swords.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/rs-assets/rs-swords.webp -------------------------------------------------------------------------------- /levelup/data/stock/runescapeui_nogold.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/runescapeui_nogold.webp -------------------------------------------------------------------------------- /levelup/data/stock/runescapeui_noicons.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/runescapeui_noicons.webp -------------------------------------------------------------------------------- /levelup/data/stock/profile-assets/offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/profile-assets/offline.png -------------------------------------------------------------------------------- /levelup/data/stock/profile-assets/online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/profile-assets/online.png -------------------------------------------------------------------------------- /levelup/data/stock/rs-assets/rs-diamond.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/rs-assets/rs-diamond.webp -------------------------------------------------------------------------------- /levelup/data/stock/rs-assets/runescapeui.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/rs-assets/runescapeui.xcf -------------------------------------------------------------------------------- /levelup/data/stock/runescapeui_withgold.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/runescapeui_withgold.webp -------------------------------------------------------------------------------- /appeals/engine/errors.py: -------------------------------------------------------------------------------- 1 | class UNCPathError(Exception): 2 | message: str 3 | 4 | 5 | class DirectoryError(Exception): 6 | message: str 7 | -------------------------------------------------------------------------------- /levelup/data/stock/profile-assets/defaultpfp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/profile-assets/defaultpfp.png -------------------------------------------------------------------------------- /levelup/data/stock/profile-assets/streaming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertyco/vrt-cogs/HEAD/levelup/data/stock/profile-assets/streaming.png -------------------------------------------------------------------------------- /referrals/engine/errors.py: -------------------------------------------------------------------------------- 1 | class UNCPathError(Exception): 2 | message: str 3 | 4 | 5 | class DirectoryError(Exception): 6 | message: str 7 | -------------------------------------------------------------------------------- /levelup/generator/pilmojisrc/__init__.py: -------------------------------------------------------------------------------- 1 | # This directory is a modified fork of the pilmoji package. 2 | # Pilmoji source: https://github.com/jay3332/pilmoji 3 | -------------------------------------------------------------------------------- /levelup/generator/requirements.txt: -------------------------------------------------------------------------------- 1 | colorgram.py 2 | emoji 3 | fastapi 4 | Pillow 5 | psutil 6 | python-decouple 7 | python-dotenv 8 | Red-DiscordBot 9 | requests 10 | uvicorn 11 | -------------------------------------------------------------------------------- /appeals/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | 4 | 5 | class Commands(Admin, metaclass=CompositeMetaClass): 6 | """Subclass all command classes""" 7 | -------------------------------------------------------------------------------- /gmail/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | 4 | 5 | class Commands(Admin, metaclass=CompositeMetaClass): 6 | """Subclass all command classes""" 7 | -------------------------------------------------------------------------------- /crafter/README.md: -------------------------------------------------------------------------------- 1 | Get crafting information for Ark items 2 | 3 | # [p]craft (Hybrid Command) 4 | Get crafting information for an item
5 | - Usage: `[p]craft ` 6 | - Slash Usage: `/craft ` 7 | -------------------------------------------------------------------------------- /guildlock/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..common.abc import CompositeMetaClass 2 | from .base import Base 3 | 4 | 5 | class BaseCommands(Base, metaclass=CompositeMetaClass): 6 | """Subclass all command classes""" 7 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | api_key_env: CROWDIN_API_KEY 2 | project_identifier_env: CROWDIN_PROJECT_ID 3 | preserve_hierarchy: 1 4 | files: 5 | - source: '**/locales/messages.pot' 6 | translation: /%original_path%/%locale%.po 7 | -------------------------------------------------------------------------------- /cowclicker/engine/errors.py: -------------------------------------------------------------------------------- 1 | class ConnectionTimeoutError(Exception): 2 | message: str 3 | 4 | 5 | class UNCPathError(Exception): 6 | message: str 7 | 8 | 9 | class DirectoryError(Exception): 10 | message: str 11 | -------------------------------------------------------------------------------- /referrals/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | from .user import User 4 | 5 | 6 | class Commands(Admin, User, metaclass=CompositeMetaClass): 7 | """Subclass all command classes""" 8 | -------------------------------------------------------------------------------- /setools/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | from .user import User 4 | 5 | 6 | class Commands(Admin, User, metaclass=CompositeMetaClass): 7 | """Subclass all command classes""" 8 | -------------------------------------------------------------------------------- /taskr/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | from .owner import Owner 4 | 5 | 6 | class Commands(Admin, Owner, metaclass=CompositeMetaClass): 7 | """Subclass all command classes""" 8 | -------------------------------------------------------------------------------- /cowclicker/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | from .user import User 4 | 5 | 6 | class Commands(Admin, User, metaclass=CompositeMetaClass): 7 | """Subclass all command classes""" 8 | -------------------------------------------------------------------------------- /guildlock/common/__init__.py: -------------------------------------------------------------------------------- 1 | import discord 2 | 3 | 4 | def get_bot_percentage(guild: discord.Guild) -> int: 5 | bots = sum(1 for i in guild.members if i.bot) 6 | return round((bots / (guild.member_count or len(guild.members))) * 100) 7 | -------------------------------------------------------------------------------- /assistant/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | from .base import Base 4 | 5 | 6 | class AssistantCommands(Admin, Base, metaclass=CompositeMetaClass): 7 | """Subclass all command classes""" 8 | -------------------------------------------------------------------------------- /extendedeconomy/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | from .user import User 4 | 5 | 6 | class Commands(Admin, User, metaclass=CompositeMetaClass): 7 | """Subclass all command classes""" 8 | -------------------------------------------------------------------------------- /appeals/db/piccolo_conf.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from piccolo.conf.apps import AppRegistry 4 | from piccolo.engine.sqlite import SQLiteEngine 5 | 6 | DB = SQLiteEngine(path=os.getenv("DB_PATH")) 7 | 8 | APP_REGISTRY = AppRegistry(apps=["db.piccolo_app"]) 9 | -------------------------------------------------------------------------------- /miner/listeners/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .member import MemberListener 3 | from .messages import MessageListener 4 | 5 | 6 | class Listeners(MemberListener, MessageListener, metaclass=CompositeMetaClass): 7 | pass 8 | -------------------------------------------------------------------------------- /referrals/db/piccolo_conf.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from piccolo.conf.apps import AppRegistry 4 | from piccolo.engine.sqlite import SQLiteEngine 5 | 6 | DB = SQLiteEngine(path=os.getenv("DB_PATH")) 7 | 8 | APP_REGISTRY = AppRegistry(apps=["db.piccolo_app"]) 9 | -------------------------------------------------------------------------------- /nonuke/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.utils import get_end_user_data_statement 2 | 3 | from .nonuke import NoNuke 4 | 5 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 6 | 7 | 8 | async def setup(bot): 9 | await bot.add_cog(NoNuke(bot)) 10 | -------------------------------------------------------------------------------- /ideaboard/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | from .adminbase import AdminBase 4 | from .user import User 5 | 6 | 7 | class Commands(Admin, AdminBase, User, metaclass=CompositeMetaClass): 8 | """Subclass all command classes""" 9 | -------------------------------------------------------------------------------- /autodocs/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .autodocs import AutoDocs 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot): 10 | await bot.add_cog(AutoDocs(bot)) 11 | -------------------------------------------------------------------------------- /metrics/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | from .database import DatabaseCommands 4 | from .user import User 5 | 6 | 7 | class Commands(Admin, User, DatabaseCommands, metaclass=CompositeMetaClass): 8 | """Subclass all command classes""" 9 | -------------------------------------------------------------------------------- /miner/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import Admin 3 | from .database import DatabaseCommands 4 | from .user import User 5 | 6 | 7 | class Commands(Admin, DatabaseCommands, User, metaclass=CompositeMetaClass): 8 | """Subclass all command classes""" 9 | -------------------------------------------------------------------------------- /tickets/commands/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .admin import AdminCommands 3 | from .base import BaseCommands 4 | 5 | 6 | class TicketCommands( 7 | AdminCommands, BaseCommands, metaclass=CompositeMetaClass 8 | ): 9 | """Subclass all command classes""" 10 | -------------------------------------------------------------------------------- /xtools/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .xtools import XTools 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot): 10 | cog = XTools(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /gmail/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import Gmail 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | await bot.add_cog(Gmail(bot)) 11 | -------------------------------------------------------------------------------- /miner/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import Miner 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | await bot.add_cog(Miner(bot)) 11 | -------------------------------------------------------------------------------- /taskr/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import Taskr 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | await bot.add_cog(Taskr(bot)) 11 | -------------------------------------------------------------------------------- /crafter/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import Crafter 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | await bot.add_cog(Crafter(bot)) 11 | -------------------------------------------------------------------------------- /levelup/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import LevelUp 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | await bot.add_cog(LevelUp(bot)) 11 | -------------------------------------------------------------------------------- /guildlock/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import GuildLock 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | await bot.add_cog(GuildLock(bot)) 11 | -------------------------------------------------------------------------------- /bankevents/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import BankEvents 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | await bot.add_cog(BankEvents(bot)) 11 | -------------------------------------------------------------------------------- /bankevents/abc.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta 2 | 3 | from discord.ext.commands.cog import CogMeta 4 | from redbot.core.bot import Red 5 | 6 | 7 | class CompositeMetaClass(CogMeta, ABCMeta): 8 | """Type detection""" 9 | 10 | 11 | class MixinMeta(metaclass=ABCMeta): 12 | """Type hinting""" 13 | 14 | bot: Red 15 | -------------------------------------------------------------------------------- /assistantutils/abc.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta 2 | 3 | from discord.ext.commands.cog import CogMeta 4 | from redbot.core.bot import Red 5 | 6 | 7 | class CompositeMetaClass(CogMeta, ABCMeta): 8 | """Type detection""" 9 | 10 | 11 | class MixinMeta(metaclass=ABCMeta): 12 | """Type hinting""" 13 | 14 | bot: Red 15 | -------------------------------------------------------------------------------- /cartographer/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import Cartographer 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | await bot.add_cog(Cartographer(bot)) 11 | -------------------------------------------------------------------------------- /fluent/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .fluent import Fluent 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = Fluent(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /levelup/dashboard/templates/settings.html: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |

This page is a work in progress!

8 |
{{ settings_form|safe }}
9 |
10 | -------------------------------------------------------------------------------- /appeals/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import Appeals 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = Appeals(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /metrics/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import Metrics 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = Metrics(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /profiler/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import Profiler 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = Profiler(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /setools/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import SETools 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = SETools(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /tickets/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .tickets import Tickets 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = Tickets(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /bankdecay/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import BankDecay 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = BankDecay(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /ideaboard/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import IdeaBoard 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = IdeaBoard(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /whitelabel/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import Whitelabel 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = Whitelabel(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .assistant import Assistant 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = Assistant(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /commandlock/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import CommandLock 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = CommandLock(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /appeals/engine/__init__.py: -------------------------------------------------------------------------------- 1 | from .engine import diagnose_issues, register_cog, reverse_migration, run_migrations 2 | from .errors import DirectoryError, UNCPathError 3 | 4 | __all__ = [ 5 | "DirectoryError", 6 | "UNCPathError", 7 | "diagnose_issues", 8 | "register_cog", 9 | "reverse_migration", 10 | "run_migrations", 11 | ] 12 | -------------------------------------------------------------------------------- /meow/README.md: -------------------------------------------------------------------------------- 1 | Meow!


My ~~girlfriend~~ (now wife!) had a dream about this cog, so I had to make it ¯\_(ツ)_/¯

Use `[p]automeow` to toggle automatic meow response. 2 | 3 | # [p]automeow 4 | Toggle automatic meow response
5 | - Usage: `[p]automeow` 6 | - Restricted to: `MOD` 7 | # [p]meow 8 | 9 | - Usage: `[p]meow` 10 | -------------------------------------------------------------------------------- /assistantutils/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import AssistantUtils 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = AssistantUtils(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /extendedeconomy/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import ExtendedEconomy 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot: Red): 10 | cog = ExtendedEconomy(bot) 11 | await bot.add_cog(cog) 12 | -------------------------------------------------------------------------------- /referrals/engine/__init__.py: -------------------------------------------------------------------------------- 1 | from .engine import diagnose_issues, register_cog, reverse_migration, run_migrations 2 | from .errors import DirectoryError, UNCPathError 3 | 4 | __all__ = [ 5 | "DirectoryError", 6 | "UNCPathError", 7 | "diagnose_issues", 8 | "register_cog", 9 | "reverse_migration", 10 | "run_migrations", 11 | ] 12 | -------------------------------------------------------------------------------- /cowclicker/db/piccolo_app.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from piccolo.conf.apps import AppConfig, table_finder 4 | 5 | CURRENT_DIRECTORY = os.path.dirname(os.path.abspath(__file__)) 6 | 7 | APP_CONFIG = AppConfig( 8 | app_name="cowclicker", 9 | table_classes=table_finder(["db.tables"]), 10 | migrations_folder_path=os.path.join(CURRENT_DIRECTORY, "migrations"), 11 | ) 12 | -------------------------------------------------------------------------------- /miner/tasks/__init__.py: -------------------------------------------------------------------------------- 1 | # Task loops can be defined here 2 | from ..abc import CompositeMetaClass 3 | 4 | 5 | class TaskLoops(metaclass=CompositeMetaClass): 6 | """ 7 | Subclass all task loops in this directory so you can import this single task loop class in your cog's class constructor. 8 | 9 | See `commands` directory for the same pattern. 10 | """ 11 | -------------------------------------------------------------------------------- /miner/db/piccolo_app.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from piccolo.conf.apps import AppConfig, table_finder 4 | 5 | CURRENT_DIRECTORY = os.path.dirname(os.path.abspath(__file__)) 6 | 7 | APP_CONFIG = AppConfig( 8 | app_name=os.getenv("APP_NAME"), 9 | table_classes=table_finder(["db.tables"]), 10 | migrations_folder_path=os.path.join(CURRENT_DIRECTORY, "migrations"), 11 | ) 12 | -------------------------------------------------------------------------------- /appeals/db/piccolo_app.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from piccolo.conf.apps import AppConfig, table_finder 4 | 5 | CURRENT_DIRECTORY = os.path.dirname(os.path.abspath(__file__)) 6 | 7 | APP_CONFIG = AppConfig( 8 | app_name=os.getenv("APP_NAME"), 9 | table_classes=table_finder(["db.tables"]), 10 | migrations_folder_path=os.path.join(CURRENT_DIRECTORY, "migrations"), 11 | ) 12 | -------------------------------------------------------------------------------- /bankdecay/common/scheduler.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import pytz 4 | from apscheduler.jobstores.memory import MemoryJobStore 5 | from apscheduler.schedulers.asyncio import AsyncIOScheduler 6 | 7 | if "TZ" not in os.environ: 8 | os.environ["TZ"] = "UTC" 9 | scheduler = AsyncIOScheduler(jobstores={"default": MemoryJobStore()}) 10 | scheduler.configure(timezone=pytz.timezone("UTC")) 11 | -------------------------------------------------------------------------------- /referrals/db/piccolo_app.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from piccolo.conf.apps import AppConfig, table_finder 4 | 5 | CURRENT_DIRECTORY = os.path.dirname(os.path.abspath(__file__)) 6 | 7 | APP_CONFIG = AppConfig( 8 | app_name=os.getenv("APP_NAME"), 9 | table_classes=table_finder(["db.tables"]), 10 | migrations_folder_path=os.path.join(CURRENT_DIRECTORY, "migrations"), 11 | ) 12 | -------------------------------------------------------------------------------- /appeals/db/utils.py: -------------------------------------------------------------------------------- 1 | from .tables import AppealQuestion 2 | 3 | 4 | class DBUtils: 5 | async def get_sorted_questions(self, guild_id: int) -> list[AppealQuestion]: 6 | return ( 7 | await AppealQuestion.objects() 8 | .where(AppealQuestion.guild == guild_id) 9 | .order_by(AppealQuestion.sort_order, AppealQuestion.created_at) 10 | ) 11 | -------------------------------------------------------------------------------- /metrics/db/piccolo_app.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from piccolo.conf.apps import AppConfig, table_finder 4 | 5 | CURRENT_DIRECTORY = os.path.dirname(os.path.abspath(__file__)) 6 | 7 | 8 | APP_CONFIG = AppConfig( 9 | app_name=os.getenv("APP_NAME"), 10 | table_classes=table_finder(["db.tables"]), 11 | migrations_folder_path=os.path.join(CURRENT_DIRECTORY, "migrations"), 12 | ) 13 | -------------------------------------------------------------------------------- /appeals/listeners/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .messages import MessageListener 3 | 4 | 5 | class Listeners(MessageListener, metaclass=CompositeMetaClass): 6 | """ 7 | Subclass all listeners in this directory so you can import this single Listeners class in your cog's class constructor. 8 | 9 | See `commands` directory for the same pattern. 10 | """ 11 | -------------------------------------------------------------------------------- /miner/engine/__init__.py: -------------------------------------------------------------------------------- 1 | from .engine import diagnose_issues, register_cog, reverse_migration, run_migrations 2 | from .errors import ConnectionTimeoutError, DirectoryError, UNCPathError 3 | 4 | __all__ = [ 5 | "ConnectionTimeoutError", 6 | "DirectoryError", 7 | "UNCPathError", 8 | "diagnose_issues", 9 | "register_cog", 10 | "reverse_migration", 11 | "run_migrations", 12 | ] 13 | -------------------------------------------------------------------------------- /cowclicker/engine/__init__.py: -------------------------------------------------------------------------------- 1 | from .engine import diagnose_issues, register_cog, reverse_migration, run_migrations 2 | from .errors import ConnectionTimeoutError, DirectoryError, UNCPathError 3 | 4 | __all__ = [ 5 | "ConnectionTimeoutError", 6 | "DirectoryError", 7 | "UNCPathError", 8 | "diagnose_issues", 9 | "register_cog", 10 | "reverse_migration", 11 | "run_migrations", 12 | ] 13 | -------------------------------------------------------------------------------- /miner/engine/errors.py: -------------------------------------------------------------------------------- 1 | class BaseORMError(Exception): 2 | """Base class for all ORM-related errors.""" 3 | 4 | def __init__(self, message: str) -> None: 5 | self.message = message 6 | super().__init__(message) 7 | 8 | 9 | class ConnectionTimeoutError(BaseORMError): 10 | pass 11 | 12 | 13 | class UNCPathError(BaseORMError): 14 | pass 15 | 16 | 17 | class DirectoryError(BaseORMError): 18 | pass 19 | -------------------------------------------------------------------------------- /hunting/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core import VersionInfo, version_info 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .hunting import Hunting 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot): 10 | if version_info >= VersionInfo.from_str("3.5.0"): 11 | await bot.add_cog(Hunting(bot)) 12 | else: 13 | bot.add_cog(Hunting(bot)) 14 | -------------------------------------------------------------------------------- /meow/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | from redbot.core import VersionInfo, version_info 3 | from redbot.core.utils import get_end_user_data_statement 4 | 5 | from .meow import Meow 6 | 7 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 8 | 9 | 10 | async def setup(bot): 11 | cog = Meow(bot) 12 | if version_info >= VersionInfo.from_str("3.5.0"): 13 | await bot.add_cog(cog) 14 | else: 15 | bot.add_cog(cog) 16 | -------------------------------------------------------------------------------- /vrtutils/abc.py: -------------------------------------------------------------------------------- 1 | from abc import ABC, ABCMeta 2 | from pathlib import Path 3 | 4 | from discord.ext.commands.cog import CogMeta 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.path: Path 18 | self.core: Path 19 | -------------------------------------------------------------------------------- /bankbackup/__init__.py: -------------------------------------------------------------------------------- 1 | import discord 2 | from redbot.core.bot import Red 3 | from redbot.core.utils import get_end_user_data_statement 4 | 5 | from .base import BankBackup 6 | 7 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 8 | 9 | 10 | async def setup(bot: Red): 11 | cog = BankBackup(bot) 12 | if discord.__version__ > "1.7.3": 13 | await bot.add_cog(cog) 14 | else: 15 | bot.add_cog(cog) 16 | -------------------------------------------------------------------------------- /events/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core import VersionInfo, version_info 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .events import Events 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot): 10 | cog = Events(bot) 11 | if version_info >= VersionInfo.from_str("3.5.0"): 12 | await bot.add_cog(cog) 13 | else: 14 | bot.add_cog(cog) 15 | -------------------------------------------------------------------------------- /pupper/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core import VersionInfo, version_info 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .pupper import Pupper 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot): 10 | cog = Pupper(bot) 11 | if version_info >= VersionInfo.from_str("3.5.0"): 12 | await bot.add_cog(cog) 13 | else: 14 | bot.add_cog(cog) 15 | -------------------------------------------------------------------------------- /guildlog/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core import VersionInfo, version_info 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .guildlog import GuildLog 5 | 6 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 7 | 8 | 9 | async def setup(bot): 10 | cog = GuildLog(bot) 11 | if version_info >= VersionInfo.from_str("3.5.0"): 12 | await bot.add_cog(cog) 13 | else: 14 | bot.add_cog(cog) 15 | -------------------------------------------------------------------------------- /levelup/generator/tenor/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 | -------------------------------------------------------------------------------- /nobot/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | from redbot.core import VersionInfo, version_info 3 | from redbot.core.utils import get_end_user_data_statement 4 | 5 | from .nobot import NoBot 6 | 7 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 8 | 9 | 10 | async def setup(bot): 11 | cog = NoBot(bot) 12 | if version_info >= VersionInfo.from_str("3.5.0"): 13 | await bot.add_cog(cog) 14 | else: 15 | bot.add_cog(cog) 16 | cog.initialize() 17 | -------------------------------------------------------------------------------- /upgradechat/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | from redbot.core import VersionInfo, version_info 3 | from redbot.core.utils import get_end_user_data_statement 4 | 5 | from .upgradechat import UpgradeChat 6 | 7 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 8 | 9 | 10 | async def setup(bot): 11 | cog = UpgradeChat(bot) 12 | if version_info >= VersionInfo.from_str("3.5.0"): 13 | await bot.add_cog(cog) 14 | else: 15 | bot.add_cog(cog) 16 | -------------------------------------------------------------------------------- /appeals/db/__init__.py: -------------------------------------------------------------------------------- 1 | import sqlite3 2 | 3 | from piccolo.engine import sqlite 4 | 5 | 6 | ### MONKEYPATCHING ### 7 | # This is a workaround for a bug in Piccolo's SQLite engine where it doesn't handle integers correctly. 8 | @sqlite.decode_to_string 9 | def convert_int_out(value: str) -> int: 10 | return int(value) 11 | 12 | 13 | sqlite.CONVERTERS["INTEGER"] = convert_int_out 14 | sqlite3.register_converter("INTEGER", convert_int_out) 15 | ### END MONKEYPATCHING ### 16 | -------------------------------------------------------------------------------- /levelup/tasks/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .weekly import WeeklyTask 3 | 4 | 5 | class Tasks(WeeklyTask, metaclass=CompositeMetaClass): 6 | """ 7 | Subclass all shared metaclassed parts of the cog 8 | 9 | This includes all task loops for LevelUp 10 | """ 11 | 12 | def start_levelup_tasks(self): 13 | self.weekly_reset_check.start() 14 | 15 | def stop_levelup_tasks(self): 16 | self.weekly_reset_check.cancel() 17 | -------------------------------------------------------------------------------- /pixl/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core import VersionInfo, version_info 2 | from redbot.core.bot import Red 3 | from redbot.core.utils import get_end_user_data_statement 4 | 5 | from .pixl import Pixl 6 | 7 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 8 | 9 | 10 | async def setup(bot: Red): 11 | cog = Pixl(bot) 12 | if version_info >= VersionInfo.from_str("3.5.0"): 13 | await bot.add_cog(cog) 14 | else: 15 | bot.add_cog(cog) 16 | -------------------------------------------------------------------------------- /referrals/db/__init__.py: -------------------------------------------------------------------------------- 1 | import sqlite3 2 | 3 | from piccolo.engine import sqlite 4 | 5 | 6 | ### MONKEYPATCHING ### 7 | # This is a workaround for a bug in Piccolo's SQLite engine where it doesn't handle integers correctly. 8 | @sqlite.decode_to_string 9 | def convert_int_out(value: str) -> int: 10 | return int(value) 11 | 12 | 13 | sqlite.CONVERTERS["INTEGER"] = convert_int_out 14 | sqlite3.register_converter("INTEGER", convert_int_out) 15 | ### END MONKEYPATCHING ### 16 | -------------------------------------------------------------------------------- /referrals/db/utils.py: -------------------------------------------------------------------------------- 1 | import discord 2 | 3 | from ..db.tables import GuildSettings 4 | 5 | 6 | class DBUtils: 7 | async def get_create_guild(self, guild: discord.Guild | int) -> GuildSettings: 8 | guild_id = guild.id if isinstance(guild, discord.Guild) else guild 9 | settings = await GuildSettings.objects().get_or_create( 10 | where=(GuildSettings.id == guild_id), defaults={GuildSettings.id: guild_id} 11 | ) 12 | return settings 13 | -------------------------------------------------------------------------------- /levelup/shared/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .levelups import LevelUps 3 | from .profile import ProfileFormatting 4 | from .weeklyreset import WeeklyReset 5 | from .checks import Checks 6 | 7 | 8 | class SharedFunctions(LevelUps, ProfileFormatting, WeeklyReset, Checks, metaclass=CompositeMetaClass): 9 | """ 10 | Subclass all shared metaclassed parts of the cog 11 | 12 | This includes classes with functions available to other cogs 13 | """ 14 | -------------------------------------------------------------------------------- /assistant/example-funcs/get_date.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | import pytz 4 | 5 | 6 | async def get_date(conf, *args, **kwargs) -> str: 7 | now = datetime.now().astimezone(pytz.timezone(conf.timezone)) 8 | return now.strftime("%A, %B %d, %Y at %I:%M %p %Z") 9 | 10 | 11 | schema = { 12 | "name": "get_date", 13 | "description": "Get todays date (timezone aware)", 14 | "parameters": { 15 | "type": "object", 16 | "properties": {}, 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /setools/abc.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta, abstractmethod 2 | 3 | from discord.ext.commands.cog import CogMeta 4 | from redbot.core.bot import Red 5 | 6 | from .common.models import DB 7 | 8 | 9 | class CompositeMetaClass(CogMeta, ABCMeta): 10 | """Type detection""" 11 | 12 | 13 | class MixinMeta(metaclass=ABCMeta): 14 | """Type hinting""" 15 | 16 | bot: Red 17 | db: DB 18 | 19 | @abstractmethod 20 | async def save(self) -> None: 21 | raise NotImplementedError 22 | -------------------------------------------------------------------------------- /economytrack/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core import VersionInfo, version_info 2 | from redbot.core.bot import Red 3 | from redbot.core.utils import get_end_user_data_statement 4 | 5 | from .economytrack import EconomyTrack 6 | 7 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 8 | 9 | 10 | async def setup(bot: Red): 11 | cog = EconomyTrack(bot) 12 | if version_info >= VersionInfo.from_str("3.5.0"): 13 | await bot.add_cog(cog) 14 | else: 15 | bot.add_cog(cog) 16 | -------------------------------------------------------------------------------- /ideaboard/common/__init__.py: -------------------------------------------------------------------------------- 1 | import orjson 2 | from pydantic import VERSION, BaseModel 3 | 4 | 5 | class Base(BaseModel): 6 | @classmethod 7 | def load(cls, obj): 8 | if VERSION >= "2.0.1": 9 | return super().model_validate(obj) 10 | return super().parse_obj(obj) 11 | 12 | def dump(self): 13 | if VERSION >= "2.0.1": 14 | return super().model_dump(mode="json", exclude_defaults=True) 15 | return orjson.loads(super().json(exclude_defaults=True)) 16 | -------------------------------------------------------------------------------- /levelup/listeners/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .guild import GuildListener 3 | from .members import MemberListener 4 | from .messages import MessageListener 5 | from .reactions import ReactionListener 6 | from .voice import VoiceListener 7 | 8 | 9 | class Listeners( 10 | GuildListener, 11 | MemberListener, 12 | MessageListener, 13 | ReactionListener, 14 | VoiceListener, 15 | metaclass=CompositeMetaClass, 16 | ): 17 | """Subclass all listener classes""" 18 | -------------------------------------------------------------------------------- /referrals/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .commands.user import referredby_context 5 | from .main import Referrals 6 | 7 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 8 | 9 | 10 | async def setup(bot: Red): 11 | await bot.add_cog(Referrals(bot)) 12 | bot.tree.add_command(referredby_context) 13 | 14 | 15 | async def teardown(bot: Red): 16 | bot.tree.remove_command(referredby_context) 17 | -------------------------------------------------------------------------------- /vrtutils/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .commands.todo import mock_edit_message 5 | from .vrtutils import VrtUtils 6 | 7 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 8 | 9 | 10 | async def setup(bot: Red): 11 | await bot.add_cog(VrtUtils(bot)) 12 | bot.tree.add_command(mock_edit_message) 13 | 14 | 15 | async def teardown(bot: Red): 16 | bot.tree.remove_command(mock_edit_message) 17 | -------------------------------------------------------------------------------- /referrals/abc.py: -------------------------------------------------------------------------------- 1 | from abc import ABC, ABCMeta 2 | 3 | from discord.ext.commands.cog import CogMeta 4 | from piccolo.engine.sqlite import SQLiteEngine 5 | from redbot.core.bot import Red 6 | 7 | from .db.utils import DBUtils 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: SQLiteEngine | None 20 | self.db_utils: DBUtils 21 | -------------------------------------------------------------------------------- /emojitracker/__init__.py: -------------------------------------------------------------------------------- 1 | import json 2 | from pathlib import Path 3 | 4 | from redbot.core import VersionInfo, version_info 5 | 6 | from .emojitracker import EmojiTracker 7 | 8 | with open(Path(__file__).parent / "info.json") as fp: 9 | __red_end_user_data_statement__ = json.load(fp)["end_user_data_statement"] 10 | 11 | 12 | async def setup(bot): 13 | cog = EmojiTracker(bot) 14 | if version_info >= VersionInfo.from_str("3.5.0"): 15 | await bot.add_cog(cog) 16 | else: 17 | bot.add_cog(cog) 18 | -------------------------------------------------------------------------------- /cowclicker/__init__.py: -------------------------------------------------------------------------------- 1 | from redbot.core.bot import Red 2 | from redbot.core.utils import get_end_user_data_statement 3 | 4 | from .main import CowClicker 5 | from .views.click import CowClickComponent 6 | 7 | __red_end_user_data_statement__ = get_end_user_data_statement(__file__) 8 | 9 | 10 | async def setup(bot: Red): 11 | cog = CowClicker(bot) 12 | await bot.add_cog(cog) 13 | bot.add_dynamic_items(CowClickComponent) 14 | 15 | 16 | async def teardown(bot: Red): 17 | bot.remove_dynamic_items(CowClickComponent) 18 | -------------------------------------------------------------------------------- /cowclicker/db/migrations/cowclicker_2024_08_28t10_29_52_671440.py: -------------------------------------------------------------------------------- 1 | from piccolo.apps.migrations.auto.migration_manager import MigrationManager 2 | 3 | ID = "2024-08-28T10:29:52:671440" 4 | VERSION = "1.13.0" 5 | DESCRIPTION = "" 6 | 7 | 8 | async def forwards(): 9 | manager = MigrationManager( 10 | migration_id=ID, app_name="cowclicker", description=DESCRIPTION 11 | ) 12 | 13 | manager.drop_table( 14 | class_name="SavedView", tablename="saved_view", schema=None 15 | ) 16 | 17 | return manager 18 | -------------------------------------------------------------------------------- /nonuke/abc.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta, abstractmethod 2 | 3 | from discord.ext.commands.cog import CogMeta 4 | from redbot.core.bot import Red 5 | 6 | from .common.models import DB 7 | 8 | 9 | class CompositeMetaClass(CogMeta, ABCMeta): 10 | """Type detection""" 11 | 12 | 13 | class MixinMeta(metaclass=ABCMeta): 14 | """Type hinting""" 15 | 16 | bot: Red 17 | db: DB 18 | 19 | @abstractmethod 20 | async def save(self) -> None: 21 | """Save the config""" 22 | raise NotImplementedError 23 | -------------------------------------------------------------------------------- /bankbackup/README.md: -------------------------------------------------------------------------------- 1 | # BankBackup Help 2 | 3 | Backup bank balances for all members of a guild 4 | 5 | # bankbackup 6 | - Usage: `[p]bankbackup` 7 | - Restricted to: `GUILD_OWNER` 8 | 9 | Backup your server's bank balances 10 | 11 | # bankrestore 12 | - Usage: `[p]bankrestore ` 13 | - Restricted to: `GUILD_OWNER` 14 | 15 | Restore your server's bank balances.
Attach your backup file with this command.

**Arguments**
- ``: Whether you want to `add` or `set` balances from the backup. 16 | 17 | -------------------------------------------------------------------------------- /gmail/abc.py: -------------------------------------------------------------------------------- 1 | from abc import ABC, ABCMeta, abstractmethod 2 | 3 | from discord.ext.commands.cog import CogMeta 4 | from redbot.core.bot import Red 5 | 6 | from .common.models import DB 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.db: DB 19 | 20 | @abstractmethod 21 | async def save(self) -> None: 22 | raise NotImplementedError 23 | -------------------------------------------------------------------------------- /setools/tasks/__init__.py: -------------------------------------------------------------------------------- 1 | from ..abc import CompositeMetaClass 2 | from .chat import CrossChat 3 | from .joinlog import JoinLog 4 | from .status import StatusChannel 5 | 6 | 7 | class SETasks(CrossChat, JoinLog, StatusChannel, metaclass=CompositeMetaClass): 8 | def start_tasks(self): 9 | self.get_chat.start() 10 | self.joinlogs.start() 11 | self.status_channel.start() 12 | 13 | def stop_tasks(self): 14 | self.get_chat.cancel() 15 | self.joinlogs.cancel() 16 | self.status_channel.cancel() 17 | -------------------------------------------------------------------------------- /miner/db/piccolo_conf.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from piccolo.conf.apps import AppRegistry 4 | from piccolo.engine.postgres import PostgresEngine 5 | 6 | DB = PostgresEngine( 7 | config={ 8 | "database": os.environ.get("POSTGRES_DATABASE"), 9 | "user": os.environ.get("POSTGRES_USER"), 10 | "password": os.environ.get("POSTGRES_PASSWORD"), 11 | "host": os.environ.get("POSTGRES_HOST"), 12 | "port": os.environ.get("POSTGRES_PORT"), 13 | } 14 | ) 15 | 16 | 17 | APP_REGISTRY = AppRegistry(apps=["db.piccolo_app"]) 18 | -------------------------------------------------------------------------------- /cowclicker/db/piccolo_conf.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from piccolo.conf.apps import AppRegistry 4 | from piccolo.engine.postgres import PostgresEngine 5 | 6 | DB = PostgresEngine( 7 | config={ 8 | "database": os.environ.get("POSTGRES_DATABASE"), 9 | "user": os.environ.get("POSTGRES_USER"), 10 | "password": os.environ.get("POSTGRES_PASSWORD"), 11 | "host": os.environ.get("POSTGRES_HOST"), 12 | "port": os.environ.get("POSTGRES_PORT"), 13 | } 14 | ) 15 | 16 | 17 | APP_REGISTRY = AppRegistry(apps=["db.piccolo_app"]) 18 | -------------------------------------------------------------------------------- /bankevents/README.md: -------------------------------------------------------------------------------- 1 | Dispatches listener events for Red bank transactions and payday claims.
- red_bank_set_balance
- red_bank_transfer_credits
- red_bank_wipe
- red_bank_prune
- red_bank_set_global
- red_economy_payday_claim

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

If bot is no longer in the server, use its ID 34 | 35 | -------------------------------------------------------------------------------- /cowclicker/db/tables.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from discord.ext.commands.core import check 4 | from piccolo.columns import BigInt, Serial, Timestamptz 5 | from piccolo.table import Table, sort_table_classes 6 | from redbot.core import commands 7 | 8 | log = logging.getLogger("red.vrt.cowclicker.db.tables") 9 | 10 | 11 | def ensure_db_connection(): 12 | async def predicate(ctx: commands.Context) -> bool: 13 | if not ctx.cog.db: 14 | if ctx.author.id not in ctx.bot.owner_ids: 15 | txt = "Database connection is not active, try again later" 16 | else: 17 | txt = f"Database connection is not active, configure with `{ctx.clean_prefix}clickerset postgres`" 18 | raise commands.UserFeedbackCheckFailure(txt) 19 | return True 20 | 21 | return check(predicate) 22 | 23 | 24 | class Click(Table): 25 | id: Serial 26 | created_on = Timestamptz() 27 | author_id = BigInt() 28 | 29 | 30 | TABLES: list[Table] = sort_table_classes([Click]) 31 | -------------------------------------------------------------------------------- /cowclicker/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": ["Vertyco"], 3 | "description": "Click the cow! A simple clicker game based on the popular [Facebook game](https://en.wikipedia.org/wiki/Cow_Clicker).\n**REQUIRES A POSTGRES INSTANCE**", 4 | "disabled": false, 5 | "end_user_data_statement": "This cog stores user IDs with each click and menu created. It does not store any other data about users.", 6 | "hidden": false, 7 | "install_msg": "# README\nThis is a DEMO cog for integrating the Piccolo ORM library with Red, database breaking schema changes can happen at any time. It **requires** a postgres instance to connect to. After installing/loading the cog run `[p]clickerset postgres` to set the connection info.", 8 | "min_bot_version": "3.5.3", 9 | "min_python_version": [3, 10, 0], 10 | "permissions": [], 11 | "required_cogs": {}, 12 | "requirements": ["piccolo>=1.0.0"], 13 | "short": "Click the cow!", 14 | "tags": ["cow", "clicker", "click", "game", "games", "fun", "piccolo", "postgres", "demo"], 15 | "type": "COG" 16 | } 17 | -------------------------------------------------------------------------------- /tickets/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": [ 3 | "Vertyco" 4 | ], 5 | "description": "Multi-Panel Discord support ticket system with buttons!", 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 Tickets! type `[p]tickets setuphelp` to get started!", 10 | "min_bot_version": "3.5.0", 11 | "min_python_version": [3, 10, 0], 12 | "permissions": [ 13 | "read_messages", 14 | "send_messages", 15 | "manage_messages", 16 | "manage_permissions", 17 | "manage_roles", 18 | "attach_files", 19 | "embed_links", 20 | "manage_channels" 21 | ], 22 | "required_cogs": {}, 23 | "requirements": [ 24 | "numpy", 25 | "chat-exporter", 26 | "pytz", 27 | "Pillow" 28 | ], 29 | "short": "Advanced support ticket system", 30 | "tags": [ 31 | "utility", 32 | "tickets", 33 | "ticket", 34 | "support", 35 | "support system" 36 | ], 37 | "type": "COG" 38 | } 39 | -------------------------------------------------------------------------------- /whitelabel/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": ["Vertyco"], 3 | "description": "Allow server owners to customize the bot's avatar, banner, and bio on a per-server basis with optional role-based access control.", 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 Whitelabel!\n\nServer owners with Manage Server permission can use `/botprofile` commands to customize the bot's profile in their server.\n\nBot owners can configure access control with `[p]whitelabel` commands.\n\nFor more information, check `[p]help whitelabel` or read the README.", 8 | "min_bot_version": "3.5.3", 9 | "min_python_version": [3, 10, 0], 10 | "permissions": ["manage_guild"], 11 | "required_cogs": {}, 12 | "requirements": ["openai"], 13 | "short": "Per-server bot profile customization with role-based access control", 14 | "tags": ["whitelabel", "profile", "avatar", "banner", "bio", "customization", "branding"], 15 | "type": "COG" 16 | } 17 | -------------------------------------------------------------------------------- /extendedeconomy/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": ["Vertyco"], 3 | "description": "Add customizable/interactive costs to commands dynamically, log bank events and more!", 4 | "disabled": false, 5 | "end_user_data_statement": "This cog stores User ID-timestamp pairs to keep track of command usage.", 6 | "hidden": false, 7 | "install_msg": "Thank you for installing!\n\n**Disclaimer**\nThis cog is in BETA. When the final version is released, some settings may need to be reconfigured.", 8 | "min_bot_version": "3.5.3", 9 | "min_python_version": [3, 10, 0], 10 | "permissions": [], 11 | "required_cogs": {"bankevents": "https://github.com/vertyco/vrt-cogs.git"}, 12 | "requirements": ["pydantic>=2.11,<2.12", "aiocache", "plotly", "pandas"], 13 | "short": "Extended bot currency economy features.", 14 | "tags": [ 15 | "economy", 16 | "currency", 17 | "credits", 18 | "bank", 19 | "banking", 20 | "costs", 21 | "interactive", 22 | "events", 23 | "plotly", 24 | "log" 25 | ], 26 | "type": "COG" 27 | } 28 | -------------------------------------------------------------------------------- /tickets/locales/messages.pot: -------------------------------------------------------------------------------- 1 | # 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: PACKAGE VERSION\n" 5 | "POT-Creation-Date: 2024-02-08 18:31-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 | #: tickets.py:32 15 | #, docstring 16 | msgid "" 17 | "\n" 18 | " Support ticket system with multi-panel functionality\n" 19 | " " 20 | msgstr "" 21 | 22 | #: tickets.py:45 23 | #, docstring 24 | msgid "No data to delete" 25 | msgstr "" 26 | 27 | #: tickets.py:274 28 | msgid "" 29 | "If you do not respond to this ticket within the next 20 minutes it will be " 30 | "closed automatically." 31 | msgstr "" 32 | 33 | #: tickets.py:291 34 | msgid "(Auto-Close) Opened ticket with no response for " 35 | msgstr "" 36 | 37 | #: tickets.py:338 38 | msgid "User left guild(Auto-Close)" 39 | msgstr "" 40 | -------------------------------------------------------------------------------- /fluent/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": [ 3 | "Vertyco" 4 | ], 5 | "description": "Seamless translation between two languages in one channel.", 6 | "disabled": false, 7 | "end_user_data_statement": "This cog does not persistently store data about users. This cog uses google and flowery's translator APIs", 8 | "hidden": false, 9 | "install_msg": "Thank you for installing Fluent!\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/fluent/README.md", 10 | "min_bot_version": "3.5.0", 11 | "min_python_version": [ 12 | 3, 13 | 10, 14 | 1 15 | ], 16 | "permissions": [ 17 | "embed_links" 18 | ], 19 | "required_cogs": {}, 20 | "requirements": [ 21 | "aiocache", 22 | "deepl", 23 | "googletrans-py", 24 | "msgpack", 25 | "openai", 26 | "ujson", 27 | "openai", 28 | "pydantic>=2.11,<2.12" 29 | ], 30 | "short": "Auto translation between two languages.", 31 | "tags": [ 32 | "utility", 33 | "translate", 34 | "translator", 35 | "autotranslate" 36 | ], 37 | "type": "COG" 38 | } 39 | -------------------------------------------------------------------------------- /levelup/tasks/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/tasks/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 188\n" 18 | "Language: es_ES\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 "\n" 27 | " Subclase todas las partes metaclasificadas compartidas del engranaje\n\n" 28 | " Esto incluye todos los bucles de tareas para LevelUp\n" 29 | " " 30 | 31 | -------------------------------------------------------------------------------- /levelup/tasks/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/tasks/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 188\n" 18 | "Language: ru_RU\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 | -------------------------------------------------------------------------------- /economytrack/graph.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | from io import BytesIO 3 | 4 | import discord 5 | import pandas as pd 6 | from plotly import express as px 7 | 8 | from economytrack.abc import MixinMeta 9 | 10 | 11 | class PlotGraph(MixinMeta): 12 | async def get_plot(self, df: pd.DataFrame, y_label: str) -> discord.File: 13 | return await asyncio.to_thread(self.make_plot, df, y_label) 14 | 15 | @staticmethod 16 | def make_plot(df: pd.DataFrame, y_label: str) -> discord.File: 17 | fig = px.line( 18 | df, 19 | template="plotly_dark", 20 | labels={"ts": "Date", "value": y_label}, 21 | ) 22 | fig.update_xaxes(tickformat="%I:%M %p\n%b %d %Y") 23 | fig.update_yaxes(tickformat="si") 24 | fig.update_layout( 25 | showlegend=False, 26 | ) 27 | bytefile = fig.to_image(format="png", width=800, height=500, scale=1) 28 | buffer = BytesIO(bytefile) 29 | buffer.seek(0) 30 | file = discord.File(buffer, filename="plot.png") 31 | return file 32 | -------------------------------------------------------------------------------- /bankdecay/common/__init__.py: -------------------------------------------------------------------------------- 1 | import orjson 2 | from pydantic import VERSION, BaseModel 3 | 4 | 5 | class Base(BaseModel): 6 | def model_dump_json(self, *args, **kwargs): 7 | if VERSION >= "2.0.1": 8 | return super().model_dump_json(*args, **kwargs) 9 | return super().json(*args, **kwargs) 10 | 11 | def model_dump(self, *args, **kwargs): 12 | if VERSION >= "2.0.1": 13 | return super().model_dump(*args, **kwargs) 14 | if kwargs.pop("mode", "") == "json": 15 | return orjson.loads(super().json(*args, **kwargs)) 16 | return super().dict(*args, **kwargs) 17 | 18 | @classmethod 19 | def model_validate_json(cls, obj, *args, **kwargs): 20 | if VERSION >= "2.0.1": 21 | return super().model_validate_json(obj, *args, **kwargs) 22 | return super().parse_raw(obj, *args, **kwargs) 23 | 24 | @classmethod 25 | def model_validate(cls, obj, *args, **kwargs): 26 | if VERSION >= "2.0.1": 27 | return super().model_validate(obj, *args, **kwargs) 28 | return super().parse_obj(obj, *args, **kwargs) 29 | -------------------------------------------------------------------------------- /pixl/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": [ 3 | "Vertyco" 4 | ], 5 | "description": "Guess pictures before anyone else as sections of it are slowly revealed.", 6 | "disabled": false, 7 | "end_user_data_statement": "This cog only stores user IDs for its leaderboard.\n\nThis cog can cause rate limiting on larger bots due to it deleting and re-sending updated images frequently.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/pixl/README.md", 8 | "hidden": false, 9 | "install_msg": "Thank you for installing!", 10 | "min_bot_version": "3.4.17", 11 | "min_python_version": [ 12 | 3, 13 | 10, 14 | 1 15 | ], 16 | "permissions": [ 17 | "read_messages", 18 | "send_messages", 19 | "manage_messages", 20 | "embed_links" 21 | ], 22 | "required_cogs": {}, 23 | "requirements": [ 24 | "Pillow", 25 | "aiocache", 26 | "tabulate" 27 | ], 28 | "short": "Image guessing game!", 29 | "tags": [ 30 | "fun", 31 | "picture", 32 | "game", 33 | "games", 34 | "pictures", 35 | "image", 36 | "images", 37 | "guessing" 38 | ], 39 | "type": "COG" 40 | } 41 | -------------------------------------------------------------------------------- /extendedeconomy/common/__init__.py: -------------------------------------------------------------------------------- 1 | import orjson 2 | from pydantic import VERSION, BaseModel 3 | 4 | 5 | class Base(BaseModel): 6 | def model_dump_json(self, *args, **kwargs): 7 | if VERSION >= "2.0.1": 8 | return super().model_dump_json(*args, **kwargs) 9 | return super().json(*args, **kwargs) 10 | 11 | def model_dump(self, *args, **kwargs): 12 | if VERSION >= "2.0.1": 13 | return super().model_dump(*args, **kwargs) 14 | if kwargs.pop("mode", "") == "json": 15 | return orjson.loads(super().json(*args, **kwargs)) 16 | return super().dict(*args, **kwargs) 17 | 18 | @classmethod 19 | def model_validate_json(cls, obj, *args, **kwargs): 20 | if VERSION >= "2.0.1": 21 | return super().model_validate_json(obj, *args, **kwargs) 22 | return super().parse_raw(obj, *args, **kwargs) 23 | 24 | @classmethod 25 | def model_validate(cls, obj, *args, **kwargs): 26 | if VERSION >= "2.0.1": 27 | return super().model_validate(obj, *args, **kwargs) 28 | return super().parse_obj(obj, *args, **kwargs) 29 | -------------------------------------------------------------------------------- /metrics/db/piccolo_conf.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from piccolo.conf.apps import AppRegistry 4 | from piccolo.engine.postgres import PostgresEngine 5 | from piccolo.engine.sqlite import SQLiteEngine 6 | 7 | 8 | def _has_postgres_credentials() -> bool: 9 | return any( 10 | os.environ.get(key) 11 | for key in ( 12 | "POSTGRES_DATABASE", 13 | "POSTGRES_USER", 14 | "POSTGRES_PASSWORD", 15 | "POSTGRES_HOST", 16 | "POSTGRES_PORT", 17 | ) 18 | ) 19 | 20 | 21 | if _has_postgres_credentials(): 22 | DB = PostgresEngine( 23 | config={ 24 | "database": os.environ.get("POSTGRES_DATABASE", "postgres"), 25 | "user": os.environ.get("POSTGRES_USER", "postgres"), 26 | "password": os.environ.get("POSTGRES_PASSWORD", "postgres"), 27 | "host": os.environ.get("POSTGRES_HOST", "localhost"), 28 | "port": os.environ.get("POSTGRES_PORT", "5432"), 29 | } 30 | ) 31 | else: 32 | DB = SQLiteEngine(path=os.environ["DB_PATH"]) 33 | 34 | 35 | APP_REGISTRY = AppRegistry(apps=["db.piccolo_app"]) 36 | -------------------------------------------------------------------------------- /miner/db/migrations/miner_2025_08_23t20_46_46_362438.py: -------------------------------------------------------------------------------- 1 | from piccolo.apps.migrations.auto.migration_manager import MigrationManager 2 | from piccolo.columns.column_types import BigInt 3 | from piccolo.columns.indexes import IndexMethod 4 | 5 | ID = "2025-08-23T20:46:46:362438" 6 | VERSION = "1.28.0" 7 | DESCRIPTION = "tool durability" 8 | 9 | 10 | async def forwards(): 11 | manager = MigrationManager(migration_id=ID, app_name="miner", description=DESCRIPTION) 12 | 13 | manager.add_column( 14 | table_class_name="Player", 15 | tablename="player", 16 | column_name="durability", 17 | db_column_name="durability", 18 | column_class_name="BigInt", 19 | column_class=BigInt, 20 | params={ 21 | "default": 0, 22 | "null": False, 23 | "primary_key": False, 24 | "unique": False, 25 | "index": False, 26 | "index_method": IndexMethod.btree, 27 | "choices": None, 28 | "db_column_name": None, 29 | "secret": False, 30 | }, 31 | schema=None, 32 | ) 33 | 34 | return manager 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021-present vertyco 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /extendedeconomy/common/parser.py: -------------------------------------------------------------------------------- 1 | from redbot.core import commands 2 | from redbot.core.i18n import Translator 3 | 4 | _ = Translator("ExtendedEconomy", __file__) 5 | 6 | 7 | class SetParser: 8 | def __init__(self, argument): 9 | allowed = ("+", "-") 10 | try: 11 | self.sum = int(argument) 12 | except ValueError: 13 | raise commands.BadArgument( 14 | _("Invalid value, the argument must be an integer, optionally preceded with a `+` or `-` sign.") 15 | ) 16 | if argument and argument[0] in allowed: 17 | if self.sum < 0: 18 | self.operation = "withdraw" 19 | elif self.sum > 0: 20 | self.operation = "deposit" 21 | else: 22 | raise commands.BadArgument( 23 | _( 24 | "Invalid value, the amount of currency to increase or decrease" 25 | " must be an integer different from zero." 26 | ) 27 | ) 28 | self.sum = abs(self.sum) 29 | else: 30 | self.operation = "set" 31 | -------------------------------------------------------------------------------- /vrtutils/vrtutils.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from redbot.core import commands 4 | from redbot.core.bot import Red 5 | from redbot.core.data_manager import cog_data_path, core_data_path 6 | 7 | from .abc import CompositeMetaClass 8 | from .commands import Utils 9 | 10 | log = logging.getLogger("red.vrt.vrtutils") 11 | 12 | 13 | class VrtUtils(Utils, commands.Cog, metaclass=CompositeMetaClass): 14 | """ 15 | A collection of stateless utility commands for getting info about various things. 16 | """ 17 | 18 | __author__ = "[vertyco](https://github.com/vertyco/vrt-cogs)" 19 | __version__ = "2.13.0" 20 | 21 | def format_help_for_context(self, ctx: commands.Context): 22 | helpcmd = super().format_help_for_context(ctx) 23 | return f"{helpcmd}\nCog Version: {self.__version__}\nAuthor: {self.__author__}" 24 | 25 | async def red_delete_data_for_user(self, *, requester, user_id: int): 26 | """No data to delete""" 27 | 28 | def __init__(self, bot: Red): 29 | super().__init__() 30 | self.bot: Red = bot 31 | self.path = cog_data_path(self) 32 | self.core = core_data_path() 33 | -------------------------------------------------------------------------------- /gmail/common/models.py: -------------------------------------------------------------------------------- 1 | import discord 2 | import orjson 3 | from pydantic import VERSION, BaseModel, EmailStr 4 | 5 | 6 | class Base(BaseModel): 7 | def model_dump(self): 8 | if VERSION >= "2.0.1": 9 | return super().model_dump(mode="json") 10 | return orjson.loads(super().json()) 11 | 12 | @classmethod 13 | def model_validate(cls, obj, *args, **kwargs): 14 | if VERSION >= "2.0.1": 15 | return super().model_validate(obj, *args, **kwargs) 16 | return super().parse_obj(obj, *args, **kwargs) 17 | 18 | 19 | class EmailAccount(Base): 20 | email: EmailStr 21 | password: str 22 | signature: str | None = None 23 | 24 | def __str__(self): 25 | return self.email 26 | 27 | 28 | class GuildSettings(Base): 29 | accounts: list[EmailAccount] = [] 30 | allowed_roles: list[int] = [] 31 | 32 | 33 | class DB(Base): 34 | configs: dict[int, GuildSettings] = {} 35 | 36 | def get_conf(self, guild: discord.Guild | int) -> GuildSettings: 37 | gid = guild if isinstance(guild, int) else guild.id 38 | return self.configs.setdefault(gid, GuildSettings()) 39 | -------------------------------------------------------------------------------- /levelup/views/locales/ko-KR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2025-08-31 20:23-0400\n" 5 | "PO-Revision-Date: 2025-09-01 00:32\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/views/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 176\n" 18 | "Language: ko_KR\n" 19 | 20 | #: levelup\views\dynamic_menu.py:20 21 | msgid "Enter Search Query or Page" 22 | msgstr "" 23 | 24 | #: levelup\views\dynamic_menu.py:80 25 | #, docstring 26 | msgid "Call this to start and refresh the menu." 27 | msgstr "" 28 | 29 | #: levelup\views\dynamic_menu.py:241 levelup\views\dynamic_menu.py:285 30 | msgid "No page found matching that query." 31 | msgstr "" 32 | 33 | #: levelup\views\dynamic_menu.py:289 34 | msgid "Found closest match of {}%" 35 | msgstr "" 36 | 37 | -------------------------------------------------------------------------------- /gmail/views/__init__.py: -------------------------------------------------------------------------------- 1 | from contextlib import suppress 2 | 3 | import discord 4 | from redbot.core import commands 5 | 6 | from ..abc import MixinMeta 7 | 8 | 9 | class BaseView(discord.ui.View): 10 | def __init__(self, cog: MixinMeta, ctx: commands.Context): 11 | super().__init__(timeout=600) 12 | self.cog = cog 13 | self.ctx = ctx 14 | 15 | self.conf = cog.db.get_conf(ctx.guild) 16 | self.channel = ctx.channel 17 | self.guild = ctx.guild 18 | self.author = ctx.author 19 | self.message: discord.Message = None 20 | 21 | async def on_timeout(self) -> None: 22 | if self.message: 23 | with suppress(discord.HTTPException): 24 | await self.message.delete() 25 | await self.ctx.tick() 26 | self.stop() 27 | await self.cog.save() 28 | 29 | async def interaction_check(self, interaction: discord.Interaction) -> bool: 30 | if interaction.user.id != self.author.id: 31 | await interaction.response.send_message("This isn't your menu!", ephemeral=True) 32 | return False 33 | 34 | return True 35 | -------------------------------------------------------------------------------- /guildlock/common/locales/ko-KR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2023-10-26 15:12-0400\n" 5 | "PO-Revision-Date: 2024-12-03 14:56\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/guildlock/common/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 96\n" 18 | "Language: ko_KR\n" 19 | 20 | #: common\views.py:13 21 | msgid "Yes" 22 | msgstr "예" 23 | 24 | #: common\views.py:14 25 | msgid "No" 26 | msgstr "아니요" 27 | 28 | #: common\views.py:20 common\views.py:82 29 | msgid "This isn't your menu!" 30 | msgstr "이건 메뉴가 아닙니다!" 31 | 32 | #: common\views.py:43 33 | msgid "Select a Page" 34 | msgstr "" 35 | 36 | #: common\views.py:46 37 | msgid "Enter Page Number" 38 | msgstr "" 39 | 40 | #: common\views.py:176 41 | msgid "Page must be a number!" 42 | msgstr "" 43 | 44 | -------------------------------------------------------------------------------- /levelup/views/locales/de-DE.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2025-08-31 20:23-0400\n" 5 | "PO-Revision-Date: 2025-09-01 00:32\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/views/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 176\n" 18 | "Language: de_DE\n" 19 | 20 | #: levelup\views\dynamic_menu.py:20 21 | msgid "Enter Search Query or Page" 22 | msgstr "" 23 | 24 | #: levelup\views\dynamic_menu.py:80 25 | #, docstring 26 | msgid "Call this to start and refresh the menu." 27 | msgstr "" 28 | 29 | #: levelup\views\dynamic_menu.py:241 levelup\views\dynamic_menu.py:285 30 | msgid "No page found matching that query." 31 | msgstr "" 32 | 33 | #: levelup\views\dynamic_menu.py:289 34 | msgid "Found closest match of {}%" 35 | msgstr "" 36 | 37 | -------------------------------------------------------------------------------- /levelup/views/locales/fr-FR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2025-08-31 20:23-0400\n" 5 | "PO-Revision-Date: 2025-09-01 00:32\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/views/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 176\n" 18 | "Language: fr_FR\n" 19 | 20 | #: levelup\views\dynamic_menu.py:20 21 | msgid "Enter Search Query or Page" 22 | msgstr "" 23 | 24 | #: levelup\views\dynamic_menu.py:80 25 | #, docstring 26 | msgid "Call this to start and refresh the menu." 27 | msgstr "" 28 | 29 | #: levelup\views\dynamic_menu.py:241 levelup\views\dynamic_menu.py:285 30 | msgid "No page found matching that query." 31 | msgstr "" 32 | 33 | #: levelup\views\dynamic_menu.py:289 34 | msgid "Found closest match of {}%" 35 | msgstr "" 36 | 37 | -------------------------------------------------------------------------------- /levelup/views/locales/es-ES.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2025-08-31 20:23-0400\n" 5 | "PO-Revision-Date: 2025-09-01 00:32\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/views/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 176\n" 18 | "Language: es_ES\n" 19 | 20 | #: levelup\views\dynamic_menu.py:20 21 | msgid "Enter Search Query or Page" 22 | msgstr "" 23 | 24 | #: levelup\views\dynamic_menu.py:80 25 | #, docstring 26 | msgid "Call this to start and refresh the menu." 27 | msgstr "" 28 | 29 | #: levelup\views\dynamic_menu.py:241 levelup\views\dynamic_menu.py:285 30 | msgid "No page found matching that query." 31 | msgstr "" 32 | 33 | #: levelup\views\dynamic_menu.py:289 34 | msgid "Found closest match of {}%" 35 | msgstr "" 36 | 37 | -------------------------------------------------------------------------------- /levelup/views/locales/tr-TR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2025-08-31 20:23-0400\n" 5 | "PO-Revision-Date: 2025-09-01 00:32\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/views/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 176\n" 18 | "Language: tr_TR\n" 19 | 20 | #: levelup\views\dynamic_menu.py:20 21 | msgid "Enter Search Query or Page" 22 | msgstr "" 23 | 24 | #: levelup\views\dynamic_menu.py:80 25 | #, docstring 26 | msgid "Call this to start and refresh the menu." 27 | msgstr "" 28 | 29 | #: levelup\views\dynamic_menu.py:241 levelup\views\dynamic_menu.py:285 30 | msgid "No page found matching that query." 31 | msgstr "" 32 | 33 | #: levelup\views\dynamic_menu.py:289 34 | msgid "Found closest match of {}%" 35 | msgstr "" 36 | 37 | -------------------------------------------------------------------------------- /levelup/views/locales/pt-PT.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2025-08-31 20:23-0400\n" 5 | "PO-Revision-Date: 2025-09-01 00:32\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/views/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 176\n" 18 | "Language: pt_PT\n" 19 | 20 | #: levelup\views\dynamic_menu.py:20 21 | msgid "Enter Search Query or Page" 22 | msgstr "" 23 | 24 | #: levelup\views\dynamic_menu.py:80 25 | #, docstring 26 | msgid "Call this to start and refresh the menu." 27 | msgstr "" 28 | 29 | #: levelup\views\dynamic_menu.py:241 levelup\views\dynamic_menu.py:285 30 | msgid "No page found matching that query." 31 | msgstr "" 32 | 33 | #: levelup\views\dynamic_menu.py:289 34 | msgid "Found closest match of {}%" 35 | msgstr "" 36 | 37 | -------------------------------------------------------------------------------- /appeals/db/migrations/appeals_2024_12_07t15_29_49_006538.py: -------------------------------------------------------------------------------- 1 | from piccolo.apps.migrations.auto.migration_manager import MigrationManager 2 | from piccolo.columns.column_types import Text 3 | from piccolo.columns.indexes import IndexMethod 4 | 5 | ID = "2024-12-07T15:29:49:006538" 6 | VERSION = "1.22.0" 7 | DESCRIPTION = "Appeal reason" 8 | 9 | 10 | async def forwards(): 11 | manager = MigrationManager( 12 | migration_id=ID, app_name="appeals", description=DESCRIPTION 13 | ) 14 | 15 | manager.add_column( 16 | table_class_name="AppealSubmission", 17 | tablename="appeal_submission", 18 | column_name="reason", 19 | db_column_name="reason", 20 | column_class_name="Text", 21 | column_class=Text, 22 | params={ 23 | "default": "", 24 | "null": False, 25 | "primary_key": False, 26 | "unique": False, 27 | "index": False, 28 | "index_method": IndexMethod.btree, 29 | "choices": None, 30 | "db_column_name": None, 31 | "secret": False, 32 | }, 33 | schema=None, 34 | ) 35 | 36 | return manager 37 | -------------------------------------------------------------------------------- /guildlock/common/locales/fr-FR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2023-10-26 15:12-0400\n" 5 | "PO-Revision-Date: 2024-12-03 14:56\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/guildlock/common/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 96\n" 18 | "Language: fr_FR\n" 19 | 20 | #: common\views.py:13 21 | msgid "Yes" 22 | msgstr "Oui" 23 | 24 | #: common\views.py:14 25 | msgid "No" 26 | msgstr "Non" 27 | 28 | #: common\views.py:20 common\views.py:82 29 | msgid "This isn't your menu!" 30 | msgstr "Ce n'est pas votre menu !" 31 | 32 | #: common\views.py:43 33 | msgid "Select a Page" 34 | msgstr "" 35 | 36 | #: common\views.py:46 37 | msgid "Enter Page Number" 38 | msgstr "" 39 | 40 | #: common\views.py:176 41 | msgid "Page must be a number!" 42 | msgstr "" 43 | 44 | -------------------------------------------------------------------------------- /guildlock/common/locales/tr-TR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2023-10-26 15:12-0400\n" 5 | "PO-Revision-Date: 2024-12-03 14:56\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/guildlock/common/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 96\n" 18 | "Language: tr_TR\n" 19 | 20 | #: common\views.py:13 21 | msgid "Yes" 22 | msgstr "Evet" 23 | 24 | #: common\views.py:14 25 | msgid "No" 26 | msgstr "Hayır" 27 | 28 | #: common\views.py:20 common\views.py:82 29 | msgid "This isn't your menu!" 30 | msgstr "Bu senin menün değil!" 31 | 32 | #: common\views.py:43 33 | msgid "Select a Page" 34 | msgstr "" 35 | 36 | #: common\views.py:46 37 | msgid "Enter Page Number" 38 | msgstr "" 39 | 40 | #: common\views.py:176 41 | msgid "Page must be a number!" 42 | msgstr "" 43 | 44 | -------------------------------------------------------------------------------- /miner/views/upgrade_view.py: -------------------------------------------------------------------------------- 1 | import typing as t 2 | 3 | import discord 4 | 5 | from ..db.tables import Player 6 | 7 | 8 | class UpgradeConfirmView(discord.ui.View): 9 | def __init__(self, player: Player): 10 | super().__init__(timeout=30) 11 | self.value: t.Optional[bool] = None 12 | self.player = player 13 | 14 | async def interaction_check(self, interaction: discord.Interaction) -> bool: 15 | if interaction.user.id != self.player.id: 16 | await interaction.response.send_message("This isn't your menu!", ephemeral=True) 17 | return False 18 | 19 | return True 20 | 21 | @discord.ui.button(label="Upgrade", style=discord.ButtonStyle.green) 22 | async def confirm(self, interaction: discord.Interaction, button: discord.ui.Button): 23 | self.value = True 24 | await interaction.response.defer() 25 | self.stop() 26 | 27 | @discord.ui.button(label="Cancel", style=discord.ButtonStyle.red) 28 | async def cancel(self, interaction: discord.Interaction, button: discord.ui.Button): 29 | self.value = False 30 | await interaction.response.defer() 31 | self.stop() 32 | -------------------------------------------------------------------------------- /appeals/db/migrations/appeals_2025_02_14t13_21_03_690552.py: -------------------------------------------------------------------------------- 1 | from piccolo.apps.migrations.auto.migration_manager import MigrationManager 2 | from piccolo.columns.column_types import Integer 3 | from piccolo.columns.indexes import IndexMethod 4 | 5 | ID = "2025-02-14T13:21:03:690552" 6 | VERSION = "1.13.0" 7 | DESCRIPTION = "appeal limit" 8 | 9 | 10 | async def forwards(): 11 | manager = MigrationManager( 12 | migration_id=ID, app_name="appeals", description=DESCRIPTION 13 | ) 14 | 15 | manager.add_column( 16 | table_class_name="AppealGuild", 17 | tablename="appeal_guild", 18 | column_name="appeal_limit", 19 | db_column_name="appeal_limit", 20 | column_class_name="Integer", 21 | column_class=Integer, 22 | params={ 23 | "default": 1, 24 | "null": False, 25 | "primary_key": False, 26 | "unique": False, 27 | "index": False, 28 | "index_method": IndexMethod.btree, 29 | "choices": None, 30 | "db_column_name": None, 31 | "secret": False, 32 | }, 33 | schema=None, 34 | ) 35 | 36 | return manager 37 | -------------------------------------------------------------------------------- /guildlock/common/locales/de-DE.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2023-10-26 15:12-0400\n" 5 | "PO-Revision-Date: 2024-12-03 14:56\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/guildlock/common/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 96\n" 18 | "Language: de_DE\n" 19 | 20 | #: common\views.py:13 21 | msgid "Yes" 22 | msgstr "Ja" 23 | 24 | #: common\views.py:14 25 | msgid "No" 26 | msgstr "Nein" 27 | 28 | #: common\views.py:20 common\views.py:82 29 | msgid "This isn't your menu!" 30 | msgstr "Das ist nicht Ihre Speisekarte!" 31 | 32 | #: common\views.py:43 33 | msgid "Select a Page" 34 | msgstr "" 35 | 36 | #: common\views.py:46 37 | msgid "Enter Page Number" 38 | msgstr "" 39 | 40 | #: common\views.py:176 41 | msgid "Page must be a number!" 42 | msgstr "" 43 | 44 | -------------------------------------------------------------------------------- /guildlock/common/locales/pt-PT.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2023-10-26 15:12-0400\n" 5 | "PO-Revision-Date: 2024-12-03 14:56\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/guildlock/common/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 96\n" 18 | "Language: pt_PT\n" 19 | 20 | #: common\views.py:13 21 | msgid "Yes" 22 | msgstr "Sim" 23 | 24 | #: common\views.py:14 25 | msgid "No" 26 | msgstr "Não" 27 | 28 | #: common\views.py:20 common\views.py:82 29 | msgid "This isn't your menu!" 30 | msgstr "Este não é o vosso menu!" 31 | 32 | #: common\views.py:43 33 | msgid "Select a Page" 34 | msgstr "" 35 | 36 | #: common\views.py:46 37 | msgid "Enter Page Number" 38 | msgstr "" 39 | 40 | #: common\views.py:176 41 | msgid "Page must be a number!" 42 | msgstr "" 43 | 44 | -------------------------------------------------------------------------------- /miner/build.py: -------------------------------------------------------------------------------- 1 | # Use this script to create the database and run the migrations 2 | import asyncio 3 | import os 4 | from pathlib import Path 5 | 6 | from dotenv import ( 7 | load_dotenv, # Requires python-dotenv library from dev-requirements.txt 8 | ) 9 | from engine import engine 10 | 11 | load_dotenv() # Make sure to place your .env file in the same directory as this script 12 | 13 | config = { 14 | "user": os.environ.get("POSTGRES_USER"), 15 | "password": os.environ.get("POSTGRES_PASSWORD"), 16 | "database": os.environ.get("POSTGRES_DATABASE"), 17 | "host": os.environ.get("POSTGRES_HOST"), 18 | "port": os.environ.get("POSTGRES_PORT"), 19 | } 20 | 21 | root = Path(__file__).parent 22 | 23 | 24 | async def main(): 25 | try: 26 | desc = input("Enter a description for the migration: ") 27 | res = await engine.create_migrations(root, config, description=desc) 28 | if "The command failed." in res: 29 | raise Exception(res) 30 | print(res) 31 | except Exception as e: 32 | print(f"Error: {e}") 33 | print(await engine.diagnose_issues(root, config)) 34 | 35 | 36 | if __name__ == "__main__": 37 | asyncio.run(main()) 38 | -------------------------------------------------------------------------------- /miner/db/migrations/miner_2025_09_10t11_35_25_981437.py: -------------------------------------------------------------------------------- 1 | from piccolo.apps.migrations.auto.migration_manager import MigrationManager 2 | from piccolo.columns.column_types import Integer 3 | from piccolo.columns.indexes import IndexMethod 4 | 5 | ID = "2025-09-10T11:35:25:981437" 6 | VERSION = "1.28.0" 7 | DESCRIPTION = "set min spawn time" 8 | 9 | 10 | async def forwards(): 11 | manager = MigrationManager( 12 | migration_id=ID, app_name="miner", description=DESCRIPTION 13 | ) 14 | 15 | manager.add_column( 16 | table_class_name="GuildSettings", 17 | tablename="guild_settings", 18 | column_name="time_between_spawns", 19 | db_column_name="time_between_spawns", 20 | column_class_name="Integer", 21 | column_class=Integer, 22 | params={ 23 | "default": 0, 24 | "null": False, 25 | "primary_key": False, 26 | "unique": False, 27 | "index": False, 28 | "index_method": IndexMethod.btree, 29 | "choices": None, 30 | "db_column_name": None, 31 | "secret": False, 32 | }, 33 | schema=None, 34 | ) 35 | 36 | return manager 37 | -------------------------------------------------------------------------------- /emojitracker/README.md: -------------------------------------------------------------------------------- 1 | Track emojis and view leaderboards/most emojis used ect..

This cog will track reactions added to other user's messages.
It will ignore reactions added to a bot's message
It will also only count one reaction per emoji for each user on a message so user's can't spam react/unreact 2 | 3 | # [p]ignoreserver 4 | Add/Remove a server from the blacklist
5 | 6 | Enter a Guild ID to add it to the blacklist, to remove, simply enter it again
7 | - Usage: `[p]ignoreserver ` 8 | - Restricted to: `BOT_OWNER` 9 | # [p]viewblacklist 10 | View EmojiTracker Blacklist
11 | - Usage: `[p]viewblacklist` 12 | - Restricted to: `BOT_OWNER` 13 | # [p]resetreacts 14 | Reset reaction data for this server
15 | - Usage: `[p]resetreacts` 16 | - Checks: `server_only` 17 | # [p]emojilb 18 | View the emoji leaderboard
19 | - Usage: `[p]emojilb` 20 | - Checks: `server_only` 21 | # [p]reactlb 22 | View user leaderboard for most emojis added
23 | - Usage: `[p]reactlb` 24 | - Checks: `server_only` 25 | # [p]emojitrackercache 26 | Get the size of EmojiTracker cache
27 | - Usage: `[p]emojitrackercache` 28 | - Restricted to: `BOT_OWNER` 29 | - Aliases: `etc` 30 | -------------------------------------------------------------------------------- /bankdecay/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 | #: main.py:29 15 | #, docstring 16 | msgid "" 17 | "\n" 18 | " Economy decay!\n" 19 | "\n" 20 | " Periodically reduces users' red currency based on inactivity, encouraging engagement.\n" 21 | " Server admins can configure decay parameters, view settings, and manually trigger decay cycles.\n" 22 | " User activity is tracked via messages and reactions.\n" 23 | " " 24 | msgstr "" 25 | 26 | #: main.py:157 27 | msgid "Bank Decay Cycle" 28 | msgstr "" 29 | 30 | #: main.py:159 31 | msgid "" 32 | "- User Balances Decayed: {}\n" 33 | "- Total Amount Decayed: {}" 34 | msgstr "" 35 | 36 | #: main.py:164 37 | msgid "No user balances were decayed during this cycle." 38 | msgstr "" 39 | 40 | #: main.py:214 41 | #, docstring 42 | msgid "No data to delete" 43 | msgstr "" 44 | -------------------------------------------------------------------------------- /guildlock/common/locales/hr-HR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2023-10-26 15:12-0400\n" 5 | "PO-Revision-Date: 2024-12-03 14:56\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/guildlock/common/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 96\n" 18 | "Language: hr_HR\n" 19 | 20 | #: common\views.py:13 21 | msgid "Yes" 22 | msgstr "" 23 | 24 | #: common\views.py:14 25 | msgid "No" 26 | msgstr "" 27 | 28 | #: common\views.py:20 common\views.py:82 29 | msgid "This isn't your menu!" 30 | msgstr "" 31 | 32 | #: common\views.py:43 33 | msgid "Select a Page" 34 | msgstr "" 35 | 36 | #: common\views.py:46 37 | msgid "Enter Page Number" 38 | msgstr "" 39 | 40 | #: common\views.py:176 41 | msgid "Page must be a number!" 42 | msgstr "" 43 | 44 | -------------------------------------------------------------------------------- /miner/db/migrations/miner_2025_09_09t20_50_38_388219.py: -------------------------------------------------------------------------------- 1 | from piccolo.apps.migrations.auto.migration_manager import MigrationManager 2 | from piccolo.columns.column_types import Boolean 3 | from piccolo.columns.indexes import IndexMethod 4 | 5 | ID = "2025-09-09T20:50:38:388219" 6 | VERSION = "1.28.0" 7 | DESCRIPTION = "tracking type toggle" 8 | 9 | 10 | async def forwards(): 11 | manager = MigrationManager( 12 | migration_id=ID, app_name="miner", description=DESCRIPTION 13 | ) 14 | 15 | manager.add_column( 16 | table_class_name="GuildSettings", 17 | tablename="guild_settings", 18 | column_name="per_channel_activity_trigger", 19 | db_column_name="per_channel_activity_trigger", 20 | column_class_name="Boolean", 21 | column_class=Boolean, 22 | params={ 23 | "default": False, 24 | "null": False, 25 | "primary_key": False, 26 | "unique": False, 27 | "index": False, 28 | "index_method": IndexMethod.btree, 29 | "choices": None, 30 | "db_column_name": None, 31 | "secret": False, 32 | }, 33 | schema=None, 34 | ) 35 | 36 | return manager 37 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | # See https://pre-commit.com for more information 2 | # See https://pre-commit.com/hooks.html for more hooks 3 | repos: 4 | - repo: https://github.com/pre-commit/pre-commit-hooks 5 | rev: v4.5.0 6 | hooks: 7 | - id: trailing-whitespace 8 | exclude: (?x)(tests/|pixl/defaults.py|README.md|locales/) 9 | - id: end-of-file-fixer 10 | exclude: (?x)(tests/|pixl/defaults.py|README.md|locales/) 11 | - id: check-yaml 12 | exclude: (?x)(tests/|pixl/defaults.py|README.md|locales/) 13 | - id: debug-statements 14 | exclude: (?x)(tests/|pixl/defaults.py|README.md|locales/) 15 | - id: requirements-txt-fixer 16 | exclude: (?x)(tests/|pixl/defaults.py|README.md|locales/) 17 | - repo: https://github.com/PyCQA/isort 18 | rev: 5.13.2 19 | hooks: 20 | - id: isort 21 | exclude: (?x)(tests/|pixl/defaults.py|README.md|locales/) 22 | - repo: https://github.com/charliermarsh/ruff-pre-commit 23 | rev: v0.1.13 24 | hooks: 25 | - id: ruff 26 | args: [--fix] 27 | ci: 28 | autofix_commit_msg: 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks 29 | autoupdate_commit_msg: ⬆ [pre-commit.ci] pre-commit autoupdate 30 | -------------------------------------------------------------------------------- /levelup/views/locales/hr-HR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2025-08-31 20:23-0400\n" 5 | "PO-Revision-Date: 2025-09-01 00:32\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/views/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 176\n" 18 | "Language: hr_HR\n" 19 | 20 | #: levelup\views\dynamic_menu.py:20 21 | msgid "Enter Search Query or Page" 22 | msgstr "" 23 | 24 | #: levelup\views\dynamic_menu.py:80 25 | #, docstring 26 | msgid "Call this to start and refresh the menu." 27 | msgstr "" 28 | 29 | #: levelup\views\dynamic_menu.py:241 levelup\views\dynamic_menu.py:285 30 | msgid "No page found matching that query." 31 | msgstr "" 32 | 33 | #: levelup\views\dynamic_menu.py:289 34 | msgid "Found closest match of {}%" 35 | msgstr "" 36 | 37 | -------------------------------------------------------------------------------- /miner/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 | from .common import tracker 8 | from .db.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: PostgresEngine | None 21 | self.db_utils = DBUtils 22 | 23 | self.activity: tracker.ActivityTracker 24 | self.active_guild_rocks: dict[int, int] 25 | self.active_channel_rocks: set[int] 26 | 27 | @abstractmethod 28 | async def initialize(self) -> None: 29 | raise NotImplementedError 30 | 31 | @abstractmethod 32 | def db_active(self) -> bool: 33 | raise NotImplementedError 34 | 35 | @abstractmethod 36 | def reset_durability_warnings(self, player_id: int) -> None: 37 | raise NotImplementedError 38 | 39 | @abstractmethod 40 | def register_durability_ratio(self, player_id: int, ratio: float | None) -> float | None: 41 | raise NotImplementedError 42 | -------------------------------------------------------------------------------- /guildlock/common/locales/es-ES.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2023-10-26 15:12-0400\n" 5 | "PO-Revision-Date: 2024-12-03 14:56\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/guildlock/common/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 96\n" 18 | "Language: es_ES\n" 19 | 20 | #: common\views.py:13 21 | msgid "Yes" 22 | msgstr "Sí" 23 | 24 | #: common\views.py:14 25 | msgid "No" 26 | msgstr "No" 27 | 28 | #: common\views.py:20 common\views.py:82 29 | msgid "This isn't your menu!" 30 | msgstr "¡Este no es tu menú!" 31 | 32 | #: common\views.py:43 33 | msgid "Select a Page" 34 | msgstr "Selecciona una página" 35 | 36 | #: common\views.py:46 37 | msgid "Enter Page Number" 38 | msgstr "Ingresa el número de página" 39 | 40 | #: common\views.py:176 41 | msgid "Page must be a number!" 42 | msgstr "¡La página debe ser un número!" 43 | 44 | -------------------------------------------------------------------------------- /profiler/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": ["Vertyco"], 3 | "description": "Cog profiling tools for bot owners and developers. Attach profilers to cogs and get runtime metrics for their commands and methods.", 4 | "disabled": false, 5 | "end_user_data_statement": "This cog does not store data about users.", 6 | "hidden": false, 7 | "install_msg": "Thank you for installing!\n\n**DISCLAIMERS**\n- This cog overrides attributes of other cogs when profiling.\n- It is not recommended to profile more than a couple of cogs at a time.\n\nTo get started, attach a profiler to a cog with `[p]attach cog `. Then use `[p]profiler view` to view the metrics.", 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", "Pympler", "tabulate", "plotly", "sentry-sdk"], 13 | "short": "Cog profiling tools for bot owners and developers", 14 | "tags": [ 15 | "profiler", 16 | "profiling", 17 | "monitoring", 18 | "monitor", 19 | "metrics", 20 | "stats", 21 | "statistics", 22 | "botinfo", 23 | "performance", 24 | "tracking", 25 | "tracker", 26 | "sentry", 27 | "logging" 28 | ], 29 | "type": "COG" 30 | } 31 | -------------------------------------------------------------------------------- /cartographer/common/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import typing as t 4 | 5 | import orjson 6 | from pydantic import VERSION, BaseModel 7 | 8 | 9 | class Base(BaseModel): 10 | def model_dump(self, *args, **kwargs) -> t.Dict[str, t.Any]: 11 | if VERSION >= "2.0.1": 12 | return super().model_dump(*args, exclude_defaults=True, **kwargs) 13 | if kwargs.pop("mode", "") == "json": 14 | return orjson.loads(super().json(*args, exclude_defaults=True, **kwargs)) 15 | return super().dict(*args, **kwargs) 16 | 17 | def model_dump_json(self, *args, **kwargs) -> str: 18 | if VERSION >= "2.0.1": 19 | return super().model_dump_json(*args, exclude_defaults=True, **kwargs) 20 | return super().json(*args, exclude_defaults=True, **kwargs) 21 | 22 | @classmethod 23 | def model_validate(cls, obj, *args, **kwargs) -> t.Self: 24 | if VERSION >= "2.0.1": 25 | return super().model_validate(obj, *args, **kwargs) 26 | return super().parse_obj(obj, *args, **kwargs) 27 | 28 | def model_copy(self, *args, **kwargs) -> t.Self: 29 | if VERSION >= "2.0.1": 30 | return super().model_copy(*args, **kwargs) 31 | return super().copy(*args, **kwargs) 32 | -------------------------------------------------------------------------------- /miner/listeners/member.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | import discord 4 | from redbot.core import commands 5 | 6 | from ..abc import MixinMeta 7 | from ..db.tables import GuildSettings 8 | 9 | log = logging.getLogger("red.vrt.miner.listeners.member") 10 | 11 | 12 | class MemberListener(MixinMeta): 13 | @commands.Cog.listener() 14 | async def on_member_remove(self, member: discord.Member) -> None: 15 | if member.bot: 16 | return 17 | if not member.guild: 18 | return 19 | if not self.db_active(): 20 | return 21 | settings: GuildSettings | None = await GuildSettings.objects().get(GuildSettings.id == member.guild.id) 22 | if not settings: 23 | return 24 | if not settings.notify_players: 25 | return 26 | if member.id not in settings.notify_players: 27 | return 28 | 29 | settings.notify_players = [uid for uid in settings.notify_players if uid != member.id] 30 | await settings.save([GuildSettings.notify_players]) 31 | await self.db_utils.get_cached_guild_settings.cache.delete(f"miner_guild_settings:{member.guild.id}") # type: ignore 32 | log.debug("Removed departed member %s from notify list in guild %s", member.id, member.guild.id) 33 | -------------------------------------------------------------------------------- /extendedeconomy/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 commands 7 | from redbot.core.bot import Red 8 | 9 | from .common.models import DB 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: DB 22 | 23 | self.checks: set 24 | self.charged: t.Dict[str, int] 25 | 26 | self.payday_callback: t.Optional[t.Callable] 27 | 28 | @abstractmethod 29 | async def save(self) -> None: 30 | raise NotImplementedError() 31 | 32 | @abstractmethod 33 | async def cost_check(self, ctx: commands.Context): 34 | raise NotImplementedError() 35 | 36 | @abstractmethod 37 | async def slash_cost_check(self, interaction: discord.Interaction): 38 | raise NotImplementedError() 39 | 40 | @abstractmethod 41 | async def transfer_tax_check(self, ctx: commands.Context): 42 | raise NotImplementedError() 43 | 44 | @abstractmethod 45 | async def send_payloads(self): 46 | raise NotImplementedError() 47 | -------------------------------------------------------------------------------- /levelup/listeners/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\listeners\__init__.py:17 15 | #, docstring 16 | msgid "Subclass all listener classes" 17 | msgstr "" 18 | 19 | #: levelup\listeners\reactions.py:64 20 | msgid "{} just gave a star to {}!" 21 | msgstr "" 22 | 23 | #: levelup\listeners\voice.py:257 24 | #, docstring 25 | msgid "" 26 | "Determine whether a user can gain exp in the current voice state\n" 27 | "\n" 28 | " voice_state may be the before or after voice state, depending on the event\n" 29 | "\n" 30 | " Args:\n" 31 | " conf (GuildSettings): The guild settings\n" 32 | " member (discord.Member): The member to check\n" 33 | " voice_state (discord.VoiceState): The current state of the user in the VC\n" 34 | "\n" 35 | " Returns:\n" 36 | " bool: Whether the user can gain exp\n" 37 | " " 38 | msgstr "" 39 | -------------------------------------------------------------------------------- /guildlock/common/locales/ru-RU.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2023-10-26 15:12-0400\n" 5 | "PO-Revision-Date: 2024-12-03 14:56\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/guildlock/common/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 96\n" 18 | "Language: ru_RU\n" 19 | 20 | #: common\views.py:13 21 | msgid "Yes" 22 | msgstr "" 23 | 24 | #: common\views.py:14 25 | msgid "No" 26 | msgstr "" 27 | 28 | #: common\views.py:20 common\views.py:82 29 | msgid "This isn't your menu!" 30 | msgstr "" 31 | 32 | #: common\views.py:43 33 | msgid "Select a Page" 34 | msgstr "" 35 | 36 | #: common\views.py:46 37 | msgid "Enter Page Number" 38 | msgstr "" 39 | 40 | #: common\views.py:176 41 | msgid "Page must be a number!" 42 | msgstr "" 43 | 44 | -------------------------------------------------------------------------------- /taskr/abc.py: -------------------------------------------------------------------------------- 1 | from abc import ABC, ABCMeta, abstractmethod 2 | 3 | import discord 4 | from apscheduler.schedulers.asyncio import AsyncIOScheduler 5 | from discord.ext.commands.cog import CogMeta 6 | from redbot.core import commands 7 | from redbot.core.bot import Red 8 | 9 | from .common.models import DB, ScheduledCommand 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: DB 22 | self.scheduler: AsyncIOScheduler 23 | 24 | @abstractmethod 25 | def save(self, maybe: bool = False) -> None: 26 | raise NotImplementedError 27 | 28 | @abstractmethod 29 | async def is_premium(self, ctx: commands.Context | discord.Guild) -> bool: 30 | raise NotImplementedError 31 | 32 | @abstractmethod 33 | async def send_modlog(self, guild: discord.Guild, content: str = None, embed: discord.Embed = None) -> None: 34 | raise NotImplementedError 35 | 36 | @abstractmethod 37 | async def ensure_jobs(self) -> bool: 38 | raise NotImplementedError 39 | 40 | @abstractmethod 41 | async def remove_job(self, task: ScheduledCommand) -> bool: 42 | raise NotImplementedError 43 | -------------------------------------------------------------------------------- /xtools/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": [ 3 | "Vertyco" 4 | ], 5 | "description": "View your Xbox profile, friends, game clips, achievements and more!", 6 | "disabled": false, 7 | "end_user_data_statement": "This cog uses Microsofts XSAPI endpoints to pull data. It stores your (the bot owner's) client ID and secret for the Azure application for authorization.", 8 | "hidden": false, 9 | "install_msg": "Thank you for installing! Use `[p]help XTools` for a list of commands you can use. Use `[p]apiset help` for a tutorial to help you get your tokens authorized.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/xtools/README.md", 10 | "min_bot_version": "3.5.0", 11 | "min_python_version": [ 12 | 3, 13 | 9, 14 | 1 15 | ], 16 | "permissions": [ 17 | "read_messages", 18 | "send_messages", 19 | "manage_messages", 20 | "embed_links", 21 | "add_reactions", 22 | "manage_reactions" 23 | ], 24 | "required_cogs": {}, 25 | "requirements": [ 26 | "xmltojson", 27 | "xbox-webapi", 28 | "utils", 29 | "tabulate", 30 | "httpx" 31 | ], 32 | "short": "Get Xbox Live Info and Player Stats.", 33 | "tags": [ 34 | "fun", 35 | "tools", 36 | "utility", 37 | "xbox", 38 | "microsoft", 39 | "xsapi" 40 | ], 41 | "type": "COG" 42 | } 43 | -------------------------------------------------------------------------------- /extendedeconomy/views/confirm.py: -------------------------------------------------------------------------------- 1 | 2 | import discord 3 | from redbot.core.i18n import Translator 4 | 5 | _ = Translator("ExtendedEconomy", __file__) 6 | 7 | 8 | class ConfirmView(discord.ui.View): 9 | def __init__(self, author: discord.Member): 10 | super().__init__(timeout=60) 11 | self.author = author 12 | self.yes.label = _("Yes") 13 | self.no.label = _("No") 14 | 15 | self.value = None 16 | 17 | async def interaction_check(self, interaction: discord.Interaction) -> bool: 18 | if interaction.user.id != self.author.id: 19 | await interaction.response.send_message(_("This isn't your menu!"), ephemeral=True) 20 | return False 21 | 22 | return True 23 | 24 | async def on_timeout(self) -> None: 25 | self.stop() 26 | 27 | @discord.ui.button(style=discord.ButtonStyle.danger) 28 | async def yes(self, interaction: discord.Interaction, button: discord.ui.Button): 29 | self.value = True 30 | await interaction.response.defer() 31 | self.stop() 32 | 33 | @discord.ui.button(style=discord.ButtonStyle.secondary) 34 | async def no(self, interaction: discord.Interaction, button: discord.ui.Button): 35 | self.value = False 36 | await interaction.response.defer() 37 | self.stop() 38 | -------------------------------------------------------------------------------- /levelup/views/locales/ru-RU.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2025-08-31 20:23-0400\n" 5 | "PO-Revision-Date: 2025-09-01 00:32\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/views/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 176\n" 18 | "Language: ru_RU\n" 19 | 20 | #: levelup\views\dynamic_menu.py:20 21 | msgid "Enter Search Query or Page" 22 | msgstr "" 23 | 24 | #: levelup\views\dynamic_menu.py:80 25 | #, docstring 26 | msgid "Call this to start and refresh the menu." 27 | msgstr "" 28 | 29 | #: levelup\views\dynamic_menu.py:241 levelup\views\dynamic_menu.py:285 30 | msgid "No page found matching that query." 31 | msgstr "" 32 | 33 | #: levelup\views\dynamic_menu.py:289 34 | msgid "Found closest match of {}%" 35 | msgstr "" 36 | 37 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Vrt-Cogs 2 | 3 | Thank you for considering contributing to my projects! Here are some guidelines to help you get started. 4 | 5 | ## How to Contribute 6 | 7 | 1. _Fork the repository_ and clone it to your local machine. 8 | 2. _Create a new branch_ for your feature or bugfix: 9 | 10 | `git checkout -b feature/your-feature-name` 11 | 12 | 3. _Make your changes_ and commit them with clear and concise messages. 13 | 4. _Push your changes_ to your forked repository: 14 | 15 | `git push origin feature/your-feature-name` 16 | 17 | 5. _Create a Pull Request_ from your branch to the `main` branch of this repository. 18 | 19 | ## Code Style 20 | 21 | - Ensure your code is well-documented and includes docstrings. 22 | - Keep your code aligned with the style of the existing code. 23 | 24 | ## Versioning 25 | 26 | - Bump the version of the cog for each change. 27 | - Use a minor version bump for new features. 28 | - Use a patch version bump for bug fixes. 29 | 30 | ## Issues 31 | 32 | - Check existing issues before creating a new one. 33 | - Provide detailed information when reporting bugs or suggesting features. 34 | 35 | ## License 36 | 37 | By contributing, you agree that your contributions will be licensed under the MIT License. 38 | 39 | --- 40 | 41 | Thank you for your contributions! 42 | -------------------------------------------------------------------------------- /tickets/locales/hr-HR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2024-02-08 18:31-0500\n" 5 | "PO-Revision-Date: 2024-12-03 14:55\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/tickets/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 13\n" 18 | "Language: hr_HR\n" 19 | 20 | #: tickets.py:32 21 | #, docstring 22 | msgid "\n" 23 | " Support ticket system with multi-panel functionality\n" 24 | " " 25 | msgstr "" 26 | 27 | #: tickets.py:45 28 | #, docstring 29 | msgid "No data to delete" 30 | msgstr "" 31 | 32 | #: tickets.py:274 33 | msgid "If you do not respond to this ticket within the next 20 minutes it will be closed automatically." 34 | msgstr "" 35 | 36 | #: tickets.py:291 37 | msgid "(Auto-Close) Opened ticket with no response for " 38 | msgstr "" 39 | 40 | #: tickets.py:338 41 | msgid "User left guild(Auto-Close)" 42 | msgstr "" 43 | 44 | -------------------------------------------------------------------------------- /tickets/locales/ko-KR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: vrt-cogs\n" 4 | "POT-Creation-Date: 2024-02-08 18:31-0500\n" 5 | "PO-Revision-Date: 2024-12-03 14:55\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/tickets/locales/messages.pot\n" 17 | "X-Crowdin-File-ID: 13\n" 18 | "Language: ko_KR\n" 19 | 20 | #: tickets.py:32 21 | #, docstring 22 | msgid "\n" 23 | " Support ticket system with multi-panel functionality\n" 24 | " " 25 | msgstr "지원 티켓 시스템의 다중 패널 기능 " 26 | 27 | #: tickets.py:45 28 | #, docstring 29 | msgid "No data to delete" 30 | msgstr "삭제할 데이터가 없습니다" 31 | 32 | #: tickets.py:274 33 | msgid "If you do not respond to this ticket within the next 20 minutes it will be closed automatically." 34 | msgstr "20분 이내에 이 티켓에 응답하지 않으면 자동으로 티켓이 닫힙니다." 35 | 36 | #: tickets.py:291 37 | msgid "(Auto-Close) Opened ticket with no response for " 38 | msgstr "(자동 종료) 응답이 없는 티켓을 열었습니다 " 39 | 40 | #: tickets.py:338 41 | msgid "User left guild(Auto-Close)" 42 | msgstr "길드를 떠난 사용자(자동 폐쇄)" 43 | 44 | -------------------------------------------------------------------------------- /profiler/common/generator.py: -------------------------------------------------------------------------------- 1 | import typing as t 2 | from datetime import datetime 3 | 4 | import plotly.graph_objects as go 5 | import plotly.io as pio 6 | from redbot.core.utils.chat_formatting import humanize_timedelta 7 | 8 | from .models import StatsProfile 9 | 10 | 11 | def generate_line_graph(profile_data: t.List[StatsProfile]) -> bytes: 12 | sorted_data = sorted(profile_data, key=lambda x: x.timestamp) 13 | # Extracting the total_tt and timestamp from each profile 14 | execution_times: t.List[float] = [profile.total_tt * 1000 for profile in sorted_data] 15 | timestamps: t.List[datetime] = [profile.timestamp for profile in sorted_data] 16 | 17 | delta = timestamps[-1] - timestamps[0] 18 | humanized_delta = humanize_timedelta(timedelta=delta) 19 | 20 | # Creating the plot 21 | fig = go.Figure() 22 | fig.add_trace(go.Scatter(x=timestamps, y=execution_times, mode="lines+markers", name="Total Execution Time")) 23 | 24 | # Customizing the plot 25 | fig.update_layout( 26 | title=f"Execution Times Over {humanized_delta}", 27 | xaxis_title="Time", 28 | yaxis_title="Execution Time (milliseconds)", 29 | xaxis=dict(tickformat="%Y-%m-%d\n%I:%M:%S %p"), 30 | template="plotly_dark", 31 | ) 32 | # Write the plot to bytes 33 | plot_bytes = pio.to_image(fig, format="png") 34 | return plot_bytes 35 | -------------------------------------------------------------------------------- /pupper/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": [ 3 | "aikaterna", 4 | "vertyco" 5 | ], 6 | "description": "Pupper is a configurable pet that can hand out credits.", 7 | "install_msg": "Originally created by aikaterna#1393, Now maintained by Vertyco#0117. This cog and its countdowns are triggered by messages. If your bot doesn't see any messages posted anywhere in any server, the pet will never come around. This pet helps to keep chat active but it needs to be slightly active in the first place. If you see a message asking for pats (or whatever other greeting message you set), the first person to react with a wave emoji will get a random amount of credits. This cog also deletes the messages involved in the game, which can lead to channels showing an unread message when there really isn't anything there any more. Use `[p]help pets` to get started. If this command doesn't work for you, the `pets` command is only usable by people with the bot's Admin or Mod role, or if the user has administrative perms on the Discord server.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/pupper/README.md", 8 | "short": "Pet the dog.", 9 | "min_python_version": [ 10 | 3, 11 | 9, 12 | 1 13 | ], 14 | "requirements": [], 15 | "tags": [ 16 | "pets" 17 | ], 18 | "type": "COG", 19 | "end_user_data_statement": "This cog does not persistently store data or metadata about users." 20 | } 21 | -------------------------------------------------------------------------------- /.github/ASSETS/Bottom_down.svg: -------------------------------------------------------------------------------- 1 | 2 | 38 | 39 | 40 | 41 | 42 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /levelup/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": ["Vertyco"], 3 | "description": "Your friendly neighborhood leveling system", 4 | "disabled": false, 5 | "end_user_data_statement": "This cog stores Discord IDs, counts of user messages, and their time spent in voice channels. No private info is stored about users.", 6 | "hidden": false, 7 | "install_msg": "Thank you for installing LevelUp! To enable leveling in this server type `[p]lset toggle`.\n\nDOCUMENTATION: https://github.com/vertyco/vrt-cogs/blob/main/levelup/README.md", 8 | "min_bot_version": "3.5.0", 9 | "min_python_version": [3, 9, 0], 10 | "permissions": [ 11 | "read_messages", 12 | "send_messages", 13 | "manage_roles", 14 | "attach_files", 15 | "embed_links" 16 | ], 17 | "required_cogs": {}, 18 | "requirements": [ 19 | "aiocache", 20 | "aiohttp>=3.9.5", 21 | "colorgram.py", 22 | "emoji", 23 | "fastapi", 24 | "msgpack", 25 | "plotly", 26 | "pydantic>=2.11,<2.12", 27 | "python-multipart", 28 | "python-decouple", 29 | "python-dotenv", 30 | "psutil", 31 | "requests", 32 | "tenacity", 33 | "ujson", 34 | "uvicorn" 35 | ], 36 | "short": "Discord leveling system", 37 | "tags": [ 38 | "activity", 39 | "level", 40 | "leveler", 41 | "leveling", 42 | "levelup", 43 | "rank", 44 | "utility", 45 | "vert" 46 | ], 47 | "type": "COG" 48 | } 49 | --------------------------------------------------------------------------------