Last active
September 15, 2023 21:29
-
-
Save TheTechRobo/8f154cba8cdcda292ad4e68176da2435 to your computer and use it in GitHub Desktop.
Revisions
-
TheTechRobo created this gist
Aug 23, 2023 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,67 @@ import discord, aiohttp, asyncio from config import TOKEN bot = discord.Bot() @bot.event async def on_ready(): global session session = aiohttp.ClientSession() print(f"We have logged in as {bot.user}") async def edit(message, content, embeds=[]): return await message.edit_original_response(content=content, embeds=embeds) @bot.slash_command() async def search(ctx, id: str): try: message = await ctx.respond(f"Coercing to a video ID...") async with session.get("https://findyoutubevideo.thetechrobo.ca/api/coerce_to_id", params={"d": id}) as resp: if resp.status != 200: if resp.status == 400: await edit(message, f"That doesn't look like a valid video ID or URL to me.\n(Server returned {await resp.text()})") return await edit(message, f"Server returned bad status code {resp.status} on API call.") return ident = (await resp.json())['data'] await edit(message, f"Converted URL to {ident}.") await asyncio.sleep(1) await edit(message, f"Making request...") async with session.get(f"https://findyoutubevideo.thetechrobo.ca/api/v3/{ident}") as resp: data = await resp.json() verdict = data['verdict']['human_friendly'] if data['verdict']['video']: colour = discord.Colour.green() elif data['verdict']['metaonly']: colour = discord.Colour.yellow() else: colour = discord.Colour.red() embed = discord.Embed( title=f"Results for {ident}", description=f"This video is {verdict}", color=colour, ) for key in data['keys']: archived = "Archived!" if key['archived'] else "Not archived" if key['metaonly'] and key['archived']: archived += " (metadata only)" if key['comments']: archived += " (including comments)" if key['error']: archived = "Unknown" if key['name'] == "#youtubearchive": # Ugly hack key['note'] = key['note'].replace("<a href='https://wiki.archiveteam.org/index.php/Archiveteam:IRC#How_do_I_chat_on_IRC?'>", "") key['note'] = key['note'].replace("</a>", "") current_key = f"__{archived}__\n{key['note'] if key['note'] else ''}" embed.add_field(name=key['name'], value=current_key, inline=True) await edit(message, "See more details at https://findyoutubevideo.thetechrobo.ca/?q="+ident, embeds=[embed]) except Exception as ename: await message.edit_original_response(content=f"An exception was raised!\nType: {type(ename)}\nData: {ename}", embeds=[]) @bot.event async def on_error(ctx, error): print(ctx.msg) bot.run(TOKEN)