from discord.ext import commands from discord import Permissions, PermissionOverwrite # init bot bot = commands.Bot(command_prefix="!") # init registered cinemas # subject to change -> save on disk cinemas = dict() @bot.group("cinema") @commands.guild_only() async def cinema(ctx): pass @cinema.command("create") @commands.bot_has_permissions(manage_channels=True) async def cinema_create(ctx, name, link=None): # create permissions overwrites, so noone is allowed to join initially overwrites = { ctx.guild.default_role: PermissionOverwrite(connect=False, view_channel=True) } bot_overwrite = PermissionOverwrite(view_channel=True, manage_channels=True, manage_permissions=True, connect=True) # create voice channel and register voice_channel = await ctx.guild.create_voice_channel(name, overwrites=overwrites, category=ctx.channel.category) await voice_channel.set_permissions(bot.user, overwrite=bot_overwrite) # create embed for series/movie # not implemented yet. # send announcement and create author reaction announcement = await ctx.channel.send("React to this.") await announcement.add_reaction("\U0001F3AB") # create cinema entry in cache cinemas[announcement.id] = voice_channel.id @bot.listen('on_reaction_add') async def on_reaction_registered_messages(reaction, user): if reaction.message.id in cinemas.keys() and user.id != bot.user.id: voice_channel = bot.get_channel(cinemas.pop(reaction.message.id)) await voice_channel.delete(reason="Cinema was closed.") print(cinemas) if __name__ == "__main__": bot.run('MzU4NTU5Njc3MDgyMTA3OTA0.Wbz8uA.jCvxjFY6NgWhXikqnZC5DWuQAa8')