#!/usr/local/bin/python from discord.ext import commands import core_utils import discord import os intents = discord.Intents.default() intents.message_content = True intents.members = True intents.reactions = True bot = commands.Bot(command_prefix="!", intents=intents) bot.remove_command("help") cogfiles = [ f"cogs.{filename[:-3]}" for filename in os.listdir("/app/cogs/") if filename.endswith(".py") ] for cogfile in cogfiles: bot.load_extension(cogfile) @bot.event async def on_ready(): print(f"{bot.user.name} has connected to Discord!") if os.getenv("DRAGON_ENV") == "prod": # await bot.get_channel(152921472304676865).send("I have reconnected") # Waiting-room in zoid's server channel_id = 1026281775984549958 message_id = 1099374735428681758 # for testing, bot-testing server's channel # channel_id = 932476007439552522 # message_id = 1099841144218722324 blurb = """Welcome to our server! We have lots of roles you can select based on what kind of games you're here to play. Please react to this message with one of the following emojis to be granted the appropriate role: 🔫 for Tarkov 👹 for Darktide or Vermintide 🪖 for Battlefield 🚀 for Star Citizen """ # message = await bot.get_channel(channel_id).send(blurb) # Update the message on_ready to match the content we always want to be there message = await bot.get_channel(channel_id).fetch_message(message_id) await message.edit(content=blurb) @bot.event async def on_raw_reaction_add(payload): if payload.guild_id is None: return # Reaction is on a private message guild = bot.get_guild(payload.guild_id) role_map = { "🔫": "Tarkov Gamers", "👹": "Dorktide Gamers", "🪖": "Battlefielders", "🚀": "Star Citizens", } role = discord.utils.get(guild.roles, name=role_map[payload.emoji.name]) member = guild.get_member(payload.user_id) if payload.channel_id == 1026281775984549958: await member.add_roles(role) @bot.listen("on_message") async def fix_cdn_url(ctx): # Ignore images videos = ["mp4", "mov"] if any(x in ctx.content for x in videos) and "media.discordapp.net" in ctx.content: await ctx.delete() await ctx.channel.send( "%s said:\n\n%s" % ( ctx.author.mention, ctx.content.replace("media.discordapp.net", "cdn.discordapp.com"), ) ) return @bot.listen("on_message") async def he_just_like_me(ctx): if ctx.guild.id in core_utils.my_guilds: phrases = ["he just like me", "hjlm", "frfr"] if any(x in ctx.content for x in phrases): await ctx.reply("https://imgur.com/V3k729v") # @bot.listen("on_message") # harass jason with shitposts # async def make_a_change(ctx): # if ctx.author.id == 83012791983673344: # await ctx.reply("https://i.redd.it/ims06c64idb91.jpg") @bot.listen("on_message") async def convert_heic_to_jpg(ctx): from cmagick import cmagick import time import tempfile if ctx.attachments: for attachment in ctx.attachments: if attachment.filename.lower().endswith(("heic", "tiff")): source_file = "/tmp/source" source_file, file_path = tempfile.mkstemp() jpg_file = "/tmp/%s.jpg" % time.time() await attachment.save(fp=file_path) img = cmagick.convert(file_path, jpg_file) try: await ctx.delete() except Exception: pass await ctx.channel.send( "%s said:\n%s" % (ctx.author.mention, ctx.content), file=discord.File(jpg_file), ) os.remove(file_path) return @bot.event async def on_command_completion(ctx): channel = bot.get_channel(826547484632678453) embed = discord.Embed(colour=discord.Color.green(), title="Command Executed") embed.add_field(name="Command:", value=f"`{ctx.command}`") embed.add_field(name="User:", value=f"`{ctx.author}`", inline=False) embed.add_field(name="Channel:", value=f"{ctx.channel} **( <#{ctx.channel.id}> )**") embed.add_field( name="Link to Message:", value="**(** [%s](%s) **)**" % (ctx.channel, ctx.message.jump_url), ) embed.add_field(name="Server:", value=f"{ctx.guild} **( <#{ctx.channel.id}> )**") if ctx.message.author.id != core_utils.my_id: await channel.send(embed=embed) bot.run(os.getenv("token"))