from discord.ext.commands import Bot, Cog from discord_slash import cog_ext, SlashContext from discord_slash.utils.manage_commands import create_option, create_choice from base import config from models.user import User import random import yaml class BasicGames(Cog): def __init__(self, bot: Bot): self.bot = bot with open("config.yaml", "r") as yamlfile: config = yaml.load(yamlfile, Loader=yaml.CLoader) print("Read config successful") self.config = config @cog_ext.cog_slash( name="coin_flip", description="Flip a coin", guild_ids=[config["discord_server_id"]], options=[ create_option( name="num_coins", description="coins to bet", option_type=4, required=True, ), create_option( name="choice", description="heads or tails?", option_type=3, required=True, choices=[ create_choice(name="Heads", value="Heads"), create_choice(name="Tails", value="Tails"), ], ), ], ) async def coin_flip(self, ctx: SlashContext, num_coins: int, choice: int): user = User.get(User.discord_id == ctx.author_id) await ctx.send(content=f"{user.username} is betting {num_coins} coins on {choice}") result = random.randrange(0, 1) choices = ["Heads", "Tails"] await ctx.send(content=f"Coin flip lands on {choices[result]}") if choice == choices[result]: await ctx.send(content=f"You win {num_coins * 2} coins!") user.add_coins(num_coins * 2) else: await ctx.send(content=f"You lose {num_coins} coins :(") user.remove_coins(num_coins) user.save() @cog_ext.cog_slash( name="dice", description="Roll some dice.", guild_ids=[config["discord_server_id"]], ) async def dice(self, ctx: SlashContext): print("dice") user = User.get(User.discord_id == ctx.author_id) result = random.randrange(1, 6) await ctx.send(content=f"{user.display_name}, you roll a {result}") def setup(bot): bot.add_cog(BasicGames(bot)) print("Loaded BasicGames") print(config["discord_server_id"])