#!/usr/local/bin/python from discord.ext import commands import discord import os import requests import requests_cache intents = discord.Intents.default() intents.message_content = True intents.members = True intents.reactions = True bot = commands.Bot(command_prefix="!", intents=intents) requests_cache.install_cache(expire_after=300) 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!") # for server in bot.guilds: # if server.name in [ # # "no officer it's hi how r u", # "Aeturnum", # "Naked Knights", # "MadsenHouse", # "Safety Zone", # "R3 Server", # "Thieve's Den MC", # "Thieve's Den", # ]: # await server.leave() # print("Left %s" % server.name) 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 = 1114045480129806361 blurb = """# Please react to this message with one of the following emojis to be granted the appropriate role(s): 🚀 for Star Citizen <:helldivers:1205747460287504424> for HellDivers <:palsphere:1201663585596481586> for Palworld 🐀 for Darktide/Vermintide :gear: for Lethal Company 🤖 for Warframe 🚔 for Ready or Not/Ground Branch 🔫 for Tarkov """ # 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): guild = bot.get_guild(payload.guild_id) role_map = { "🔫": "Tarkov Gamers", "🤖": "Warframe Enjoyers", "🐀": "Dorktide Gamers", "helldivers": "Hell Divers", "🚀": "Star Citizens", "⚙️": "Lethal Gamers", "🚔": "Ready or Notters", "palsphere": "Palworlders", } if payload.channel_id == 1026281775984549958: role = discord.utils.get(guild.roles, name=role_map[payload.emoji.name]) member = guild.get_member(payload.user_id) await member.add_roles(role) @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) 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.listen("on_message") async def fix_social_media_links(ctx): correct_domains = { "https://x.com": "vxtwitter", "https://www.x.com": "vxtwitter", "https://twitter.com": "vxtwitter", "https://www.twitter.com": "vxtwitter", "https://tiktok.com": "vxtiktok", "https://www.tiktok.com": "vxtiktok", } if ctx.author.id == bot.user.id: return for k in correct_domains.keys(): if ctx.content.startswith(k) or ctx.content.startswith("www.{k}.com"): await ctx.channel.send( "%s said:\n%s" % ( ctx.author.mention, ctx.content.replace(k, "https://%s.com" % correct_domains[k]).split( "?" )[0], ) ) await ctx.delete() return # @bot.event # async def on_message(ctx): # if str(bot.user.id) in ctx.content: # url = "http://192.168.1.52:1337/v1/chat/completions" # bot_prompt = ( # "You are a helpful assistant. You will answer questions conciesely" # "and as detailed as possible. You are based out of the United states in California." # ) # payload = { # "messages": [ # { # "content": bot_prompt, # "role": "system", # }, # { # "content": ctx.content.replace(str(bot.user.id), "").replace( # "<@> ", "" # ), # "role": "user", # }, # ], # "model": "openchat-3.5-7b", # "stream": False, # "max_tokens": 4096, # "stop": ["hello"], # "frequency_penalty": 0, # "presence_penalty": 0, # "temperature": 0.7, # "top_p": 0.95, # } # headers = {"Content-Type": "application/json"} # response = requests.post(url, json=payload, headers=headers) # await ctx.reply( # response.json()["choices"][0]["message"]["content"].replace( # "<|end_of_turn|>", "" # ) # ) bot.run(os.getenv("discord_token"))