import discord import os import random from flask import Flask from threading import Thread import time app = Flask(__name__) intents = discord.Intents.all() intents.members = True bot = discord.Bot(intents=intents) NL = "\n" PREFIX = "f!" cmds = [] @bot.event async def on_ready(): print(f"Bot vivo! \nUsuario: {bot.user}") await bot.user.edit(username="GIFbot") await bot.change_presence( status=discord.Status.online, activity=discord.Activity( type=discord.ActivityType.playing, name="f!helpme para obtener la lista de comandos")) channel = bot.get_channel(1153429735527948399) msg = await channel.fetch_message(1153429808429158460) print(f"características actuales: {msg.content}") await send_log(f"hora de inicio: {time.ctime(time.time())}") @bot.event async def on_message(message): for cmd in cmds: if message.content.startswith(f'{PREFIX}{cmd[0]}'): await message.channel.send(random.choice(cmd[1])) break if message.content.startswith(f'{PREFIX}helpme'): await message.channel.send(make_help()) @bot.command(description="Añade una característica más de Arnau!") async def add(ctx, attr: discord.Option(str)): channel = bot.get_channel(1153429735527948399) msg = await channel.fetch_message(1153429808429158460) if attr.lower() not in msg.content.lower(): await msg.edit(content = f'{msg.content}\n- {attr}') await ctx.respond(f"Característica añadida! ", ephemeral=True) await send_log(f"Característica añadida: {attr} por {ctx.user}") else: await ctx.respond("Característica ya añadida!", ephemeral=True) @bot.command(description = "Borrar una característica de Arnau (sólo admins)") async def delete(ctx, attr: discord.Option(str)): channel = bot.get_channel(1153429735527948399) msg = await channel.fetch_message(1153429808429158460) role = discord.utils.get(ctx.guild.roles, name = "Admin") if role not in ctx.author.roles or ctx.author.id == 676816739065004043: await ctx.respond("No tienes permiso para hacerlo!", ephemeral = True) return if attr.lower() not in msg.content.lower(): await ctx.respond("Característica no encontrada.", ephemeral = True) else: await msg.edit(content = f'{msg.content.replace(f"{NL}- {attr}", "")}') await ctx.respond("Característica eliminada :(", ephemeral = True) await send_log(f"Característica eliminada: {attr} por {ctx.user}") async def send_log(msg): channel = bot.get_channel(1153800096761262152) msg = await channel.send(msg) @app.route("/") def startpage(): return "" def parse_cmds(f): cmd_file = open(f) for line in cmd_file.readlines(): if len(line.rstrip()) == 0: continue cmd = line.split(" ")[0] links = [_ for _ in line.split()[1:]] cmds.append((cmd, links)) def make_help(): help = ("helpme", f"""El prefijo de este bot es: f! Los comandos son: {NL.join(_[0] for _ in cmds)} Disfrutad del bot \~\~Mike & BinLAB\~\~ """) return help[1] def runServer(): app.run(host='0.0.0.0', port=8181) def keep_alive(): t = Thread(target=runServer) t.start() def run(): keep_alive() parse_cmds("cmds.txt") make_help() try: return bot.run(os.environ['TOKEN']) except: return os.system("kill 1") # sinceramente, no sé por qué funciona ni si realmente funciona así, pero funciona run()