commit c483076c840f2f950bd6fd3669a805a28692c3d3 Author: Guzzy Date: Wed Nov 15 06:04:47 2023 +0000 Upload files to "/" diff --git a/marsey_bot.py b/marsey_bot.py new file mode 100644 index 0000000..62ff3a5 --- /dev/null +++ b/marsey_bot.py @@ -0,0 +1,90 @@ + +#!/usr/bin/env python +# encoding: utf-8 + +import os +import discord +from discord.ext import commands +from discord.ext import tasks +from PIL import Image, ImageSequence +import string + + +def wheres_marsey(message_text): #returns list of potential marsey names + marsey_names = [] + message_text = message_text.lower().split('!') #convert message to all lowercase and checks for "!" + for marsey_name in message_text: + marsey_name = marsey_name.translate(str.maketrans('', '', string.punctuation)) #strip punctuation + marsey_name = marsey_name.split(' ') + marsey_names.append(marsey_name[0]) #only look for first word afer "!" + return [x for x in marsey_names[1:] if x] #ignore empty strings + + +def is_animated(file_path): #check if webp is animated or static + try: + media = Image.open(file_path) + Index = 0 + for Frame in ImageSequence.Iterator(media): #check number of frames + Index += 1 + if Index > 1: #if more than one frame return True + return True + else: + return False + except: + return False + +def webm2gif(abs_media_path): #convert webp to gif + media = Image.open(abs_media_path) #path of webm file + media.info.pop('background', None) + abs_media_path = abs_media_path[:-4]+'gif' #change the path from webp to gif + media.save(abs_media_path, 'gif', optimize=False, save_all=True, disposal=2) #temp save a gif file (there might be a better way but i lazy :marseyteehee:) + return(abs_media_path) #return gif path + + +client = commands.Bot(command_prefix = '!') + +@client.event #print ready in command line to verify bot initiation +async def on_ready(): + print('ready') + +@client.event +async def on_message(message): #bot reads every message in server + + message_text = message.content + + marsey_names = wheres_marsey(message_text) #make list of called marseys + + marsey_queue = [] #empty list of marseys to send + + for marsey_name in marsey_names: + + #find directory of marsey + bot_dir = os.path.dirname(__file__) + rel_marsey_path = "emojis/"+marsey_name+".webp" + abs_marsey_path = os.path.join(bot_dir, rel_marsey_path) + + flag = 0 #flag used in webp to gif file conversion + + if os.path.isfile(abs_marsey_path): #only continue if marsey exists + + #if marsey is animated, turn it into a gif + if is_animated(abs_marsey_path) is True: + abs_marsey_path = webm2gif(abs_marsey_path) + flag = 1 #flag for deleting temp gif file after sent + + #open file and add it to send queue + with open(abs_marsey_path, 'rb') as f: + marsey_queue.append(discord.File(f)) + + #delete temp file + if flag == 1: + os.remove(abs_marsey_path) + flag = 0 #reset flag + + if marsey_queue: #only send marsey(s) + await message.channel.send(files=marsey_queue) + +#token +with open('discord_token.txt') as f: + discord_token = f.readline() +client.run(discord_token)