https://github.com/grandmoff100/discordgame
A Python Framework for Making Text and Reaction Button Based Games in Discord.
https://github.com/grandmoff100/discordgame
discord discord-py hacktoberfest hacktoberfest2020 python-framework
Last synced: 2 months ago
JSON representation
A Python Framework for Making Text and Reaction Button Based Games in Discord.
- Host: GitHub
- URL: https://github.com/grandmoff100/discordgame
- Owner: GrandMoff100
- Created: 2020-08-19T17:24:15.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2021-05-21T14:02:54.000Z (about 4 years ago)
- Last Synced: 2025-03-24T20:43:01.204Z (3 months ago)
- Topics: discord, discord-py, hacktoberfest, hacktoberfest2020, python-framework
- Language: Python
- Homepage:
- Size: 50.8 KB
- Stars: 3
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DiscordGame
*DiscordGame is a Python Framework for making Games
from simple mini games like Tic Tac Toe
to full-fledge Dungeon and Dragon campaigns inside Discord.*## Getting Started
### Installation
```shell script
$ pip install discordgame
```
Or clone the repo```shell script
$ git clone https://github.com/GrandMoff100/DiscordGame
```and run
```shell script
$ python setup.py install
```### Usage
DiscordGame is structured like this.
Whenever a trigger event like a reaction (called a button) or a new message is sent while a game is active,
those events are passed to all games that are registered to a GameHost object.
As you can see here with the on_text_event and on_button_event...
```python
import discordgame as dg
```> Here's a couple of examples to help you get the gist of how this framework works...
> These examples assume you have cloned the repository and have the examples folder downloaded.
- *A Simple MadLib made with ``discordgame``:*
```python
import discord
import discordgame as dgclass MadLib(dg.Game):
game_name = 'MadLib'def __init__(self, ctx):
# Creates a list of blanks
self.word_blanks = ['(blank)'] * 8
# Assign a MadLib string to a variable.
self.lib = 'The {} {}ed across the {} to get to the {} {}. It wanted to get to the {} so it could {} with a {}.'
# Initialize the Parent Game class with the MadLib specific values.
super().__init__(self.game_name, [[self.lib.format(*self.word_blanks)]], ctx=ctx, needs_text_input=True)# Define events to be triggered on a user's message event.
async def on_text_event(self, player: discord.User, text: str):
try:
next_index = self.word_blanks.index('(blank)') # Finds the left-most blank in the list.
self.word_blanks.pop(next_index) # Pops that blank from the list.
self.word_blanks.insert(next_index, text) # Inserts the user's word into the said blank.
self.stats['Blanks to Fill ->'] = len([word for word in self.word_blanks if word == '(blank)'])
# ^^ Updates the Blanks to fill Counter.
await self.update_layout([[self.lib.format(*self.word_blanks)]]) # Sends the changes to discord.
if '(blank)' not in self.word_blanks:
self.stop()
await player.send(self.lib.format(*self.word_blanks)) # Sends the final MadLib to the channel.
except ValueError: # If there's no blank in the list.
self.stop()
await player.send(self.lib.format(*self.word_blanks)) # Sends the final MadLib to the channel.
```- *A Cool Snake Game made with ``discordgame``:*
Still developing a frame based example (mostly because I'm lazy and some of the library features aren't implemented yet)
- And then loading the games (see examples/example.py)
```py
from discordgame import GameHost# Import our example games from 2 other files in the examples directory.
from .snake import Snake
from .madlib import MadLibhost = GameHost('*')
# Add our Games to the GameHost so users can play them.
host.add_game(Snake)
host.add_game(MadLib)# Add run the GameHost.
host.run(TOKEN)
```### More Features
## Testing and Issues
We welcome any new insights and issues with this framework.
To make an issue, head over to the issues page on our repository -> https://github.com/GrandMoff100/DiscordGame and open a new issue.
We look forward working on fixing any bugs or issues that we might have missed.## Contribution
We'd love for you to Contribute! New features and optimizations are welcome!
Just fork the Repository and make the changes and then make a pull request with your improvements.
If you make enough improvements, consistently we'll add you as a contributor.