A Discord Bot for the Pygame Community Server

Overview

PygameCommunityBot

The Pygame Community Discord bot

The bot is capable of doing a lot of stuff, the command prefix is pg!. For help on all the bot commands, run pg!help.

The bot is licensed under the MIT license.

Contributing

Setting up the bot on test mode

  • When you get the 'sorcerer' role on the discord server, you will be given the token of the test bot.

  • You can then run the bot locally on your local setup to test the bot.

  • Make sure you have python 3.7 or above, install the deps with pip install -r requirements.txt

  • Make a .env file at the base dir (this is git-ignored), and set it like

TEST_TOKEN = "bot token goes here"
TEST_USER_ID = 1234567890 # your discord ID
  • Run the main.py file, and you should see a dev version of the bot fire up

Running the bot on your server

  • In addition to the above steps, if you want to get the bot started on your own server, you'd need to make some code changes, in the common.py file, you would either need to set the bot on "generic" mode, where the server specific features are disabled, or alternatively, rewrite ServerConstants class, but with the constants from your server. Don't forget to revert these changes when you send us a PR!
Comments
  • Implement an Asynchronous Task Management system using OOP principles

    Implement an Asynchronous Task Management system using OOP principles

    Is your feature request related to a problem? Please describe. Our current way of running asynchronous tasks that run in the background (e.g. bot reminders) is very limited. For instance, it isn't currently possible to dispatch a discord API event to several task functions at once. We also have no control of them at runtime, which could be very important for scenarios where a task function should end prematurely, either due to bugs or other server-specific reasons.

    Describe the solution you'd like A jobs module that defines a set of base classes which can be subclassed in order to implement specific types of job classes (interval based, event based, etc.) in the server for the bot to run. These classes would produce independent job instances as objects, which run based on specific data given as input. All active jobs would be managed by a job manager object which keeps track of them and can view, modify, pause, stop, restart or kill jobs at runtime. It should also be responsible for dispatching discord API events to the job types that support them. Job objects should also be able to interact with other jobs in different ways, like allowing other jobs to be notified when one job is finished/killed, or when it has produced a specific type of output. There would also need to be a permission system that prevents some tasks from stopping/killing other ones at runtime.

    Describe alternatives you've considered In the end, one could argue that all of this can be implemented using a simple discord.ext.tasks.loop decorator bound to a function and other data structures, but this alone is very inflexible, and misses out on the many possibilities that an OOP-based task system offers.

    enhancement ✨ Difficulty: Hard 😭 feature request ✋ 
    opened by Mega-JC 12
  • Delete discussion embed when entry is deleted

    Delete discussion embed when entry is deleted

    Helps in keeping the discussion channel clean when someone accidently sends something in resource or showcase.

    Right now it deletes the embed but maybe editing the embed to say the original message has been deleted would've been better.

    Also, for some reason, black has added an import statement in line 19. I don't know if its necessary.

    opened by Belvix 3
  • Command response messages with an error should be deleted if their invocation messages get deleted

    Command response messages with an error should be deleted if their invocation messages get deleted

    Is your feature request related to a problem? Please describe. When people run commands with the bot with syntax errors, they often forget that the bot can respond to corrections of their initial invocation messages, so they call a command in a new message, with the first response message of the bot (showing their error) remaining in place, even when they delete their first invocation message. Usually, those people aren't able to delete messages by the bot, so the error simply remains.

    Describe the solution you'd like A simple solution to this problem is to allow the bot to respond to the deletion of command invocation messages by deleting its response message if it refers to a command error.

    enhancement ✨ Priority: Low 💤 Code: Commands 
    opened by Mega-JC 2
  • Minor PEP 8 changes, format long periods of time with format_long_time()

    Minor PEP 8 changes, format long periods of time with format_long_time()

    Pycharm reformatted common.py, and as a result, some "unnecessary" newlines between variables got delete. I hope that doesn't matter a lot...

    pg!vibecheck now formats the number of seconds since last petted (e.g if it has been 61 seconds since last petted, it would say "1 minute, 1 second")

    opened by SSS-Says-Snek 2
  • Implement `bootstrap.json`, change command modules into bot extensions, remove emotion and db functionality

    Implement `bootstrap.json`, change command modules into bot extensions, remove emotion and db functionality

    This PR removes a lot of unused and disabled functionality within the bot, as well as restructuring command modules in way that allows them to be managed like bot extensions. The new bootstrap.json file can be used to specify which extensions to load at bot startup, and can be expanded to support other things. Future commands can be used to setup automatic overrides for the bootstrap data to customize what is loaded at runtime.

    opened by Mega-JC 1
  • Port to discord.py v2.0 and `snakecore`

    Port to discord.py v2.0 and `snakecore`

    This PR ports the entire codebase to discord.py v2.0, as well as to the snakecore helper library. It also reimplements all commands using discord.ext.commands. The changes in this PR are substantial.

    This PR should not be merged until the functionality added in this snakecore PR has been implemented. Ideally,discord.py v2.0 should also be released before this PR is merged in.

    Edit:

    • snakecore PR is merged.
    • This also ports the entire project to Python 3.9.
    Difficulty: Hard 😭 PR: Needs Core Review Code: DB Code: Utils Priority: High 🚨 Code: Commands Code: Core 
    opened by Mega-JC 1
  • Port command system to `discord.ext.commands`

    Port command system to `discord.ext.commands`

    This PR ports the entire backbone of the current command system to discord.py's discord.ext.commands. This port is an addition to the changes in the snakecore_port branch.

    There are a few reasons for this:

    1. Portable

    The command framework is built right into discord.py and is bot-agnostic and server-agnostic by design, meaning that porting commands from one bot to another should be a lot easier.

    2. Popular

    The framework itself is used by a large amount of discord.py users, and large projects (like the bots in the Python Discord) make use of it without many problems. It would also make it easy for others to provide external contributions to command-related code.

    3. Extensible, Feature-Rich

    The framework is designed in a way that allows you to write commands and parse them using a built-in powerful system, as well as to allow for custom parsing of raw command input, should it be necessary. With enough time, one can work around limitations that might show at first.

    Regarding 3.: Commands still preserve the entirety of their input syntax, as the custom parser used in the command code is being ported into snakecore.

    This PR will hopefully allow for a more robust system to build command functionality on.

    enhancement ✨ Difficulty: Hard 😭 PR: Needs Core Review Code: Base Commands Priority: Medium ☕️ Code: Commands 
    opened by Mega-JC 1
  • `exec` command crashes the entire bot when using infinite recursion

    `exec` command crashes the entire bot when using infinite recursion

    Describe the bug command: pg!exec ```py

    def a():
        try:
            a()
        except:
            a()
    a()
    

    will crash bot instantly.

    To Reproduce there

    Expected behavior Return error

    Additional context ...

    bug 🐛 Impact: Severe 🌊 Difficulty: Hard 😭 Code: User Commands Priority: Medium ☕️ Code: Commands 
    opened by gresm 1
  • Punish users that bonk the bot too much

    Punish users that bonk the bot too much

    It was annoying that people kept spamming the bonk. Now if a user bonks > 10 times in one message, then they get punished by getting "bot muted". This means that the user can't execute any bot commands (even helpful ones). The "bot mute" goes away after around 3 minutes. If the code doesn't work or is bad, please tell me what I did wrong!

    PR: Awaiting Review PR: Draft Code: Emotions PR: Needs Testing 
    opened by coolstuff123 1
  • pg!browse Admin Command for paginating through the messages of a channel

    pg!browse Admin Command for paginating through the messages of a channel

    by Mega_JC,#7835, on Jun. 8, 2021

    PygameBot should be able to paginate through the messages of a specified channel in a specified range. Potential Syntax: pg!browse [before=] [after=] [around=] [mode=0]

    When the paginator times out, and someone refreshes the paginator using pg!refresh, the range that was initially specified should be remembered.

    mode= should have 2 possible values: 1: Only paginate through the text content of a message. ~~2: Use a placeholder message to represent the message and embed currently being viewed by the paginator.~~ Helpful Links

    • https://discordpy.readthedocs.io/en/latest/api.html#discord.TextChannel.history
    • https://discordpy.readthedocs.io/en/latest/api.html#discord.Message.edit
    Difficulty: Medium 🧐 feature request ✋ Code: Admin Commands 
    opened by Mega-JC 1
  • Revamp vibecheck system to use percentages, add pie chart to vibecheck

    Revamp vibecheck system to use percentages, add pie chart to vibecheck

    Just a note, because I am smooth brain, I can't find a good way to fill an arc, so I had to steal some code on StackOverflow :kekw: However, the arcs aren't that precise, and because of the way the code on SO was built, there are some gaps between the pie charts. But, like I said before, I am smooth brain, so I don't know how to fix that 😔 Anyways, I hope I don't break the bot 👀

    opened by SSS-Says-Snek 1
Releases(v1.6.1)
  • v1.6.1(Aug 7, 2022)

    See v1.6.0 for the major release.

    Fixes:

    • Update bot versioning string to v1.6.1

    Full Changelog: https://github.com/pygame-community/LegacyPygameCommunityBot/compare/v1.6.0...v1.6.1

    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Aug 7, 2022)

    Welcome To Discord Bot API v9

    This release implements the long awaited support for Discord threads, text-chat in voice channels, and other improvements related to v9 of the Discord Bot API, though discord.py v2.0 . This upgrade also paves the way for application commmands, modals and future interaction-based bot features. In addition, discord.ext.commands is now the main command framework used by the project.

    A new dependency, snakecore, now acts as the main utility framework for the project's codebase.

    Unless stated otherwise in the future, this will be the last minor release of the PygameCommunityBot project. PygameCommunityBot Generation 2.0, a complete rewrite, is currently being planned, see more here.

    What's Changed

    • rename 'VERSION' variable to __version__, tweaks to admin command exc… by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/351
    • remove polls db, use footer indication by @ankith26 in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/352
    • remove _2 suffix from embed_utils commands by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/353
    • move parser functions into new file, add nested tuple parsing support by @ankith26 in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/354
    • quickfix minor bugs in codeblock and string handling in parser by @ankith26 in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/355
    • Add more typehints to embed_utils.py, minor improvements to embed related code by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/357
    • Use new discord time formatting features by @ankith26 in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/356
    • Add browse admin command by @zoldalma999 in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/344
    • Fix raise SystemExit bugs in exec cmd by @SSS-Says-Snek in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/359
    • Fix raise BaseException bugs in pg!exec by @SSS-Says-Snek in https://github.com/pygame-community/PygameCoLegacyPygameCommunityBotmunityBot/pull/360
    • embed_utils.py improvements, add multi embed editing support to '!emsudo edit' by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/361
    • fix color bug in clock, do not hardcode clock image size by @ankith26 in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/363
    • fix spacing bug when urls is set to True in '!sudo fecth' command by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/362
    • fix embed validation and filtering bugs for embed commands by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/365
    • add reply support to 'archive' command by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/366
    • Improve archive command appearance, show less redundancy in output by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/368
    • Add pd!events wc commands by @ankith26 in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/372
    • Handle WC roles, update functions by @ankith26 in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/374
    • add feature to warn people about posting recent but invalid messages … by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/375
    • Fix entry_message_validity_check(), format code with black by @SSS-Says-Snek in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/376
    • 👀 Hello there, may I help you with this ONE "it's" MISTAKE? by @avaxar in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/377
    • Fully port codebase to use snakecore.utils by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/378
    • Add feature to delete command response messages using a reaction by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/379
    • Port command system to discord.ext.commands by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/380
    • Major Codebase Refactoring: Adhere to bot-template repository structure by @Mega-JC in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/383
    • try/except in clock command so that a missing member doesn't break the command by @oddbookworm in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/384

    New Contributors

    • @oddbookworm made their first contribution in https://github.com/pygame-community/LegacyPygameCommunityBot/pull/384

    Full Changelog: https://github.com/pygame-community/LegacyPygameCommunityBot/compare/v1.5.3...v1.6.0

    Source code(tar.gz)
    Source code(zip)
  • v1.5.3(Jun 26, 2021)

    Shiny, Shiny new version!

    Haha another update! In the last 24-ish days we have managed to get 175 commits, and also we've had 31 changed source files with 11,779 additions and 8,044 deletions! Sounds like a lot of changes, innit ;)

    This release has truly been a maintenance release, with loads of bug fixes, and code quality improvements. We also managed to sneak up a few features while bug hunting!

    New stuff


    New admin commands: pg!emsudo swap and pg!sudo swap

    PRs #271 and #295 by @Mega-JC

    New admin commands to swap the contents and embeds of two messages. Also, many emsudo commands were renamed to fit better with the group command syntax. Some commands even got new keyword arguments to control pings!

    New admin command: pg!react

    PR #293 by @bydariogamer

    New admin command pg!react, this command helps admins to make the bot send reactions on messages!

    New admin command: pg!info server

    PR #299 by @SSS-Says-Snek

    A new admin command, pg!info server was added to get some info about servers.

    New admin command: pg!emsudo sum

    PR #300 by @Mega-JC

    New admin command to sum up emsudo embeds.

    New admin command: pg!feature

    PR #345 by @ankith26

    New admin command, to add a per-channel control on some of the bot features. Yes, the dad jokes feature of the bot has been restricted to only a few channels on the server.

    Improved Stuff


    Emsudo updates

    PRs #256, #258 and #261 by @Mega-JC

    The commands pg!emsudo edit and pg!emsudo remove command have been revamped and work much better now! The pg!emsudo get command also got some improvements and API load on these emsudo functions were decreased, thanks to the loading bar updates and optimizations.

    Revamped pg!vibecheck and emotion updates

    PR #259, #277 and #287 by @SSS-Says-Snek

    Now the bot is gonna show effects of being confused! That's right, don't enter wrong commands and confuse our bot. Also, the pg!vibecheck command has been revamped and improved, now showing a pie chart of emotions, and the overall emotion system got more balance changes!

    Better docs for commands

    PR #270, #274 and #275 by @Mega-JC

    We are revamping our docs! While this is still a work in progress thing, Mega-JC has already done some great progress with the docs. As part of the new doc system, we will be more accurately describing the functions, the kind of arguments the function takes, and return stuff, so that users find the commands easier to understand and use!

    Tuple input support

    PR #297 by @ankith26

    The bot just got support for tuple argument input! Yes, that means that you can enter tuples as arguments for bot commands. Some commands that make use of this new feature are pg!poll and pg!resources

    pg!poll unique votes

    PR #341 by @SSS-Says-Snek

    The pg!poll command now supports unique votes, where people can vote only one option at a time. This can be controlled via a unique keyword arg, which is true by default

    Admin commands improvements

    PR #264, #284 and #298 by @Mega-JC

    The admin commands got some more juicy improvements, and also some bugs were fixed in the pg!archive command. The pg!info command was moved to another file. Also, the pg!sudo get command just got a new pop arg!

    Bot shell output redirect to discord console channel

    Commit b040b0b by @ankith26 and @zoldalma999

    The bot's shell output is now redirected to a discord channel, so that bot maintainers can more easily keep track of any bugs in the bot and make sure things are running well.

    Dad jokes improvements

    PR #304 by @bydariogamer

    Dad jokes were improved, and more motivational shakespearean quotes were added! Those tend to be pretty deep and motivating indeed!

    Bug fixes, code cleanups, polish stuff


    Code refactor and improvements

    PR #272 by @ankith26

    The codebase was refactored into separate files for ease of access. The commands were split up into their own folder, and also into separate files. Also, in subsequent commits, more typehints and such were added improve the codebase, and also, typecheckers like PyLance complain much lesser than before!

    Entries discussion cross posting fixes

    PR #301 by @Belvix

    The cross posted messages in the entries discussion channel are now edited and deleted when the original message is edited and deleted.

    DB bugfixes

    PR #342 by @ankith26

    The DB previously had a bug where there was a chance of data corruption, and now this bug has been fixed thanks to a DB lock

    Admin commands bug fixes

    PR #278, #279 and #285 by @Mega-JC

    The bugs in create_as_dict() function and embed timestamp handling were fixed

    Better docs for group commands

    PR #268 by @ankith26

    Now the pg!doc command correctly displays doc for all sub commands in a group command

    Poll unique arg fixes and other misc fixes

    PRs #302, #303 and #349 by @ankith26

    Fixed reminders and group commands bug, write db got file support, eval command was restricted to a few roles, the bugs in the unique arg of the poll command were fixed, and also, the parser got discord.PartialMessage support, along with other misc changes in these PRs

    Minor grammar fixes

    PR #257 by @coolstuff123 and PR #350 by @Belvix

    Minor grammar changes lol. Might seem like small changes, but each contribution counts!

    Hehe, those are all the important changes of this version listed out, there were more tiny fixes and improvements, but the notes would get too long if I started listing those. For more detailed info, you can always check it out here.

    That concludes the notes! As all releases, even this one would not have been possible without our contributors who contributed in this release. @Mega-JC @SSS-Says-Snek @zoldalma999 @ankith26 @bydariogamer @Belvix @coolstuff123

    That's all for now, keep your peepers ready for the upcoming versions! Until then, take care, and enjoy!

    Source code(tar.gz)
    Source code(zip)
  • v1.5.2(May 31, 2021)

    Yayy another Bot Update!

    Yep, thats right! Another update! After only 12 days we have managed to get over 200 commits (two times more than the last release!). There are a lot of new stuff and we even got two new contributors!

    Brand new goodies


    The latest, cutting edge ~~technology~~ commands!

    New user command: pg!fontify

    Commits b299750 and 22634c3 by @ankith26, #250 by @bydariogamer and #254 by @Belvix

    Mega-JC added a font based on the iconic pygame logo, and everyone uses it to send messages! And we can't blame them, the font is super neat! But to make it easier to send these messages we added pg!fontify. With this handy command you can easily send a message with the font! If you ever wanna delete your message, just use pg!fontify remove.

    New user commands: pg!stream

    #217 by @bydariogamer and @ankith26

    People stream on the server! Sometimes. And when they do it is a lot of fun! So if you don't want to miss it then you can use the pg!stream commands to subscribe to streams. And then whenever someone is live they will ping you to notify you of the stream!

    New feature: Group commands

    #221 by @ankith26

    PygameBot just got support for group commands! Yea that's right, no more underscores in most of the command names. This feature helps in grouping commands that are similar under one group, to keep stuff neat and organised!

    New admin commands: pg!pin and pg!unpin

    #233 by @Mega-JC

    Pinning messages trough the discord GUI? Boring. Pinning messages trough bot commands? Cool! Admins now can pin/unpin messages easily, even if there are a lot of them!

    New admin commands: pg!db commands

    Commit 06ff0ac by @ankith26

    The DB has been getting quite a few improvements and optimisations, and now pd!db commands are implemented for admins to have more flexibility in managing the DB.

    Improved Stuff


    Improved pg!exec command, gif support

    #213, #244 by @zoldalma999 and Commit cb20c16 by @Mega-JC

    You can now create gifs using our bot! Yep, you heard me right! With pg!exec use the output.add_frame function to add a frame to the gif! We also wrote up a small tutorial for it that you can find on the discord server changelog. We prettified the output embed and also added pygame.Sprite and pygame.time to the list of modules you can use!

    Emotion system upgrades

    #214 by @ankith26, #239, #241, #251 by @SSS-Says-Snek

    Yes! We already knew that our beloved snek bot had emotions! And our snek continues to get better with emotions! Snek bot now has 4-factor emotions, based on anger, boredom, happiness, and confusion! Use the beta version of pg!vibecheck to check the emotions!

    Improved pg!remind command

    #216 by @SSS-Says-Snek

    pg!remind command now got support for taking input in the units of months! Yea, you can set long term reminders with the bot too!

    Improved emsudo commands

    #208, #211, #218, #220, #223, #224, #225, #238, #240, #248, #252 by @Mega-JC

    Emsudo commands had another round of polishing and upgrading! It has been ported to the new parsing system, they now accept multiple arguments to create batches of embeds/messages and json files can now be used to send embeds as well! There are a lot more changes though, it is hard to sum all of them up into a short paragraph.

    Bug fixes, code cleanups, polish stuff


    Support for python 3.7 and 3.8

    Commit 21088b5 by @ankith26

    The bot source got support for python versions 3.7 and 3.8, because these versions are quite widely used too.

    Added generic mode to allow the bot to be run on other servers easily

    #242 by @ankith26

    The "generic mode" is a way to get the bot running on other servers, if you wanted to test things out! The generic mode disables server specific stuff so that the bot can easily run on other servers, but some of its features are limited.

    Limit admin commands to the author's role level

    #248 by @Mega-JC

    Commands like pg!archive now checks the perms of the users running it, so that users do not try to archive messages of channels that they are not supposed to see.

    Disable some commands in dms

    Commit 7961862 by @ankith26

    Did you know that you can run some commands in dms? Well we kinda forgot about it so there were a few bugs related to it. A few commands have been disabled from dms so that you cannot create a poll thats with just PygameBot and you.


    In all we had 208 commits, with 5,276 additions and 4,085 deletions over 18 files. There are a lot more small changes and bug fixes that you can check out here.

    So that's all the new stuff we have! This would not have happened without our contributors:

    @ankith26 @Mega-JC @SSS-Says-Snek @zoldalma999 @bydariogamer @Belvix

    Thanks for reading this patch note, take care!

    Source code(tar.gz)
    Source code(zip)
  • v1.5.1(May 17, 2021)

    Yayy another Bot Update!

    PygameCommunityBot has gotten another shiny, shiny update! This time, we have bumped a patch version, from 1.5.0 to 1.5.1. That does not mean that this is a small release, it is packed with all the juicy stuff and wizard spells you would expect, coming from our Union of Wizards and Mages.

    What's New

    We have many things to show you!

    New user command: pg!resources

    #184 and #196 by @SSS-Says-Snek

    Wanna browse through good learning resources? We have a lot of them on our server! Now, thanks to the pg!resources bot command, you can easily browse through them, filter by topics you are interested in and also filter resources based on the authors! Easy way for a beginner to get started on their python/pygame/gamedev journey!

    New user command: pg!rules

    Commit 21fcef1 by @ankith26

    You can now check out the rules of our server with the pg!rules command. Use it list out one or more rules, also useful for pointing others to our rules. But the prophecy of the ancient Wisdom Book of Mages points out that this command can be used to unlock the top secret unwritten rule of the PygameCommunityServer! Are you ready to be entrusted with this knowledge? Is this prophecy true? There is only one way to find out!

    New feature: Emotion system

    #207 by @SSS-Says-Snek

    Did you hear that? Our beloved snek now has emotions of its own! Be careful not to make our snake angry, and don't let it get bored. The new emotion system is not yet complete though, so expect more updates coming to it!

    New feature: Dad jokes and dead chat

    commit 7a14c03 and 8df6e44 by @ankith26

    Ever feel bored? Want to hear some jokes? Our beloved snek just learnt to make jokes! Dad jokes, to be precise. I mean come on, who does not like a perfectly timed dad joke coming off randomly at your message on discord? This ought to keep the chat alive. Speaking of alive chats, have you ever heard of "dead chat"? Snek bot does not like "dead chat", and is gonna remind you to not say "dead chat", quoting the wise words of a wise man!

    New admin command: pg!info

    #176 and #180 by @Mega-JC

    As discord moderators, we always need to be on the watch for people doing anything wrong. With the help of this pg!info command (initially implemented as pg!member_info and pg!sudo_stats and later merged into one command), we can get info related to any message or any member in our discord server.

    New admin commands: pg!whitelist_cmd and pg!blacklist_cmd

    #185 by @ankith26

    A utility to blacklist/whitelist commands of the bot was added, so that any commands can be stopped from running while we are still working on it

    Improved Stuff

    Improved pg!archive command

    #183, #188, #197 and #198 by @Mega-JC

    Want to keep archives of messages? We have a(n admin) command for that, and that is pg!archive! This command just got a whole lot better, with more customizations on the archives, neater looking archive output and fine grained control with more keyword arguments.

    Reminders updates

    Commit d9b3d6c by @ankith26 and #192 by @SSS-Says-Snek

    Reminders have been revamped to be more reliable, and offer long term reminders now! The API for the reminder functions have been modified to make it better, offering a string input and keyword arguments input, so that you could enter the time duration argument more easily, and also, the ability to view and unset your old reminders have been added now! This was made possible due to improvements in the way the bot stores data in a DB-like system.

    pd!stop updates

    Commit 1ce1c34 by @ankith26

    pd!stop now works better, allowing to stop other tester's running bot.

    Bug fixes, code cleanups, polish stuff

    A lot of stuff have been polished, code has been cleaned off dusty old cobwebs and made it easier to work with.

    Black

    #195 by @zoldalma999

    For the sake of consistent code formatting, @zoldalma999 got the idea of using black, and we could not disagree. I mean everybody loves clean code, right? @SSS-Says-Snek has also done a lot of work in making our codebase shinier, putting many PEP8 fixer PRs that it is hard to list them here. But code cleaning is quite boring, thankfully it will be automated from now.

    Embed stuff

    #174 and #175 by @Mega-JC

    Embed stuff had a few rounds of bug fixing and polish

    Poll fixes

    #186 by @zoldalma999

    A few bugs in close_poll were fixed, and the resources command was improved a bit

    There were more bug fixes, but I got bored of listing them, and you might get bored reading them too. Hopefully the interesting ones have already been covered, but if you want to see the detailed comparison between the old version and this one, click here. In all, we had 98 commits.


    And with this, we conclude this release notes! More coming up, so keep your peepers ready for those!

    Contributors this release: @ankith26 @Mega-JC @zoldalma999 @SSS-Says-Snek

    Thanks for reading and happy hacking!

    Source code(tar.gz)
    Source code(zip)
  • v1.5.0(May 17, 2021)

    Bot update!

    PygameBot's version have been bumped from v1.4 to v1.5. So what's new? We have quite a bit of stuff to show!

    Shiny new stuff

    Some new commands, bit of new functionality and maybe the leftover magic dust.

    New Commands: pg!poll and pg!close_poll

    PR #181 by @zoldalma999

    Want to decide who is right? Or which is the best programming language? Maybe which apple is better? You can now do that with pg!poll! pg!poll lets you start a reaction-based poll to so that you can let everyone decide! You can stop it anytime with pg!close_poll!

    New Command: pg!remind

    commit ec03bc3 by @ankith26

    Do you forget when to bump? We have an answer for that as well! pg!remind lets you set a reminder so that you can beat everyone else at bumping the server.

    A lot of new emsudo commands

    A lot of PRs and commits. Cant list every one of them, all of it is done by @Mega-JC

    Embeds on discord look very neat, don't you think! We just love posting them! This is possible due to the new commands that allow us to make, edit, copy and even delete these prettier looking embeds with an easier, better, and more featureful syntax! Expect more of these because we love the way they look!

    Paging system

    PR #150 by @zoldalma999

    The help embed was starting to become crowded. So we split it up and added the ability to go between pages, just like a book! To see how they look like try pg!help!

    Improvements

    Changes that make existing things better or easier to use.

    pg!exec now accepts files

    commit 12e54d4 by @ankith26

    Executing python programs with our beloved bot was never so easy! You can now attach a text or python file and see the results like it was inside a code block! So you can now write your pg!exec code in your favourite editor and just drag-and-drop the file in!

    Commands that require a msg_id as their first argument now can be set by responding to a message

    commit 7a3d96a by @ankith26

    To make it easier to use commands like pg!refresh or pg!close_poll you can now respond to a message and it will be automagically set the message_id as the first argument so that you don't have to worry about them anymore.

    Revamped clock command

    PR #171 by @ankith26

    Everyone who has the honour to be on the pg!clock can now edit their time zones or remove themselves entirely. Admins and mods can also add other people freely. Even better, if you have a time zone that is not yet occupied on the clock you can be the one setting the color!

    Revamped parsing system

    PR #168, #173 by @ankith26

    We have rewritten our parsing system to be better, cleaner and more functional! Every argument has a type so it will be easier to write and handle commands. Some of them even support keyword arguments!
    That is all that we can provide, for now anyway. Contributors this release: @ankith26 @Mega-JC @zoldalma999 Thanks for reading and happy hacking!

    Source code(tar.gz)
    Source code(zip)
Owner
PygameCommunityDiscord
The GitHub organization of the "Pygame Community" Discord server - a server run by fans and devs of pygame: https://www.github.com/pygame/pygame
PygameCommunityDiscord
Discord spam bots with multiple account support and more

Discord spam bots with multiple account support and more. PLEASE READ EVERYTHING BEFORE WRITING AN ISSUE!! Server Messages Text Image Dm Messages Text

Mr. Nobody 6 Sep 14, 2022
Non official, but friendly QvaPay library for the Python language.

Python SDK for the QvaPay API Non official, but friendly QvaPay library for the Python language. Setup You can install this package by using the pip t

Carlos Lugones 17 Nov 25, 2022
The Foursquare API client for Python

foursquare Python client for the foursquare API. Philosophy: Map foursquare's endpoints one-to-one Clean, simple, Pythonic calls Only handle raw data,

Mike Lewis 400 Dec 19, 2022
Asyncevents: a small library to help developers perform asynchronous event handling in Python

asyncevents - Asynchronous event handling for modern Python asyncevents is a small library to help developers perform asynchronous event handling in m

Mattia 5 Aug 07, 2022
Module to use some statistics from Spotify API

statify Module to use some statistics from Spotify API To use it you have to import the functions into your own project. You have also to authenticate

Miguel Cózar 2 Jun 02, 2022
Based Telegram Bot and Userbot To Play Music in Your Telegram Groups With Some Cool Extra Features! 🥰

CallMusicPlus69 This Repo base on! 🤗️ A CallsMusic Based Telegram Bot and Userbot To Play Music in Your Telegram Groups With Some Cool Extra Features

brut✘⁶⁹ // ユスフ 6 Jun 26, 2022
This bot will automatically like and follow users that post under a specified hashtag

Instagram-bot This bot will automatically like and follow users that post under a specified hashtag Dependencies Java JDK Selenium Updated version of

Makana Edwards 1 Nov 04, 2021
Oussama has taken his first dose of vaccine D days ago

Oussama has taken his first dose of vaccine D days ago. He may take the second dose no less than L days and no more than R days since his first dose. Determine if Oussama is too early, too late, or i

INDIA - ENSAM Rabat 2 Feb 01, 2022
Script to get a notification when a product, on Amazon Warehouse, is available within a target price

Amazon_Warehouse_Scraping This script aims to scrape Amazon Warehouse and send an email back if there are products whose price matches with the target

2 Oct 25, 2021
Ciclo 1 - MisiónTIC - UIS (Retos)

misiontic_uis Ciclo 1 - MisiónTIC - UIS Reto 1: Fundamentos del Lenguaje Python Reto 2: Estructuras de Control Condicional Reto 3: Estructuras de Cont

9 May 24, 2022
Telegram bot for searching videos in your PDisk account by @AbirHasan2005

PDisk-Videos-Search A Telegram bot for searching videos in your PDisk account by @AbirHasan2005. Configs API_ID - Get from @TeleORG_Bot API_HASH - Get

Abir Hasan 39 Oct 21, 2022
Discord bot for the IOTA Wiki

IOTA Wiki Bot Discord bot for the IOTA Wiki Report Bug · Request Feature About The Project This is a Discord bot for the IOTA Wiki. It's currently use

IOTA Community 2 Nov 14, 2021
Automatically render tens of thousands of unique NFT images individually as png's.

Blend_My_NFTs Description This project is a work in progress (as of Oct 24th, 2021) and will eventually be an add on to Blender. Blend_My_NFTs is bing

Torrin Leonard 894 Dec 29, 2022
Attempting to create a framework for Discord Slash commands... yes

discord_slash.py Attempting to create a framework for Discord Slash commands... yes Installation pip install slashpy Documentation Coming soon™ Why is

AlexFlipnote 11 Mar 24, 2021
This repository are used to give class about AWS

AWSTraining This repository are used to give class about AWS by Marco Antonio Pereira Linkedin: https://www.linkedin.com/in/marcoap To see the types o

Marco Antonio Pereira 6 Nov 23, 2022
Definitive Guide to Creating a SQL Database on Cloud with AWS and Python

Definitive Guide to Creating a SQL Database on Cloud with AWS and Python An easy-to-follow comprehensive guide on integrating Amazon RDS, MySQL Workbe

Kenneth Leung 6 Aug 17, 2022
StudyLion is a Discord bot that tracks members' study and work time while offering members to view their statistics and use productivity tools such as: To-do lists, Pomodoro timers, reminders, and much more.

StudyLion - Discord Productivity Bot StudyLion is a Discord bot that tracks members' study and work time while offering members the ability to view th

45 Dec 26, 2022
AWS DeepRacer Free Student Workshop: Run faster by using your custom waypoints

AWS DeepRacer Free Student Workshop: Run faster by using your custom waypoints Reward Function Template for waypoints def reward_function(params):

Yuen Cheuk Lam 88 Nov 27, 2022
NFT Generator - A NFT Generator created using Python

NFT_Generator v1 An NFT Generator created using Python. This NFT Generation tool

3 Dec 02, 2022
discord.xp Bot, counts XP for members

discord.xp Bot, counts XP for members. How to setup and run? You must have an mysql database Download libs from the requirements.txt file Configurize

irwing 4 Feb 05, 2022