discord-cinema-bot/main.py

48 lines
1.6 KiB
Python

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')