diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0a2795b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +discord_info.txt +.venv +.env \ No newline at end of file diff --git a/bot.py b/bot.py index ae65c3a..8378cf7 100644 --- a/bot.py +++ b/bot.py @@ -1,22 +1,36 @@ import discord import responses +from io import BytesIO +import os +from os import getenv +from dotenv import load_dotenv, find_dotenv +load_dotenv(find_dotenv()) async def send_message(message, user_message, is_private): try: response = responses.get_response(user_message) - await message.author.send(response) if is_private else await message.channel.send(response) + if type(response) == str: + await message.channel.send(response) + else: + if not message.author.guild_permissions.manage_emojis: + await message.channel.send("You do not have permission to manage emojis.") + return + try: + await message.guild.create_custom_emoji(name="gif", image=response) + await message.channel.send("Emote Added") + except discord.HTTPException as e: + await message.channel.send(f"An error occurred: {e}") except Exception as e: print(e) - def run_discord_bot(): - TOKEN = 'MTAzMTgyODc5OTcyMzE1OTU1Mw.GuDYw4.NgEcEiljxvIUcDlr3WmD0X7TV5TByT_ob769QM' + TOKEN = getenv("DISCORD_BOT_TOKEN") intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) - + @client.event async def on_ready(): print(f'{client.user} is now running!') @@ -34,8 +48,8 @@ def run_discord_bot(): if user_message[0] == '?': user_message = user_message[1:] - await send_message(message, user_message, is_private=True) - else: await send_message(message, user_message, is_private=False) + + client.run(TOKEN) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index bf61c5a..f27f8d5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,5 @@ imageio -discord.py \ No newline at end of file +discord.py +pyvips +requests +python-dotenv \ No newline at end of file diff --git a/responses.py b/responses.py index c477eec..7d0cbab 100644 --- a/responses.py +++ b/responses.py @@ -1,16 +1,39 @@ import random +import seventv +import requests +from PIL import Image +from io import BytesIO +import pyvips -def get_response(message: str) -> str: +def get_response(message: str): p_message = message.lower() if p_message == 'hello': return 'Hey there!' - if message == 'roll': - return str(random.randint(1, 6)) + if p_message[:3] == ("add"): + url = p_message.split(" ")[1] + return(addGif(url)) - if p_message == '!help': - return '`This is a help message that you can modify.`' + if p_message == 'help': + return helpText() - return 'I didn\'t understand what you wrote. Try typing "!help".' \ No newline at end of file + print(p_message[:3]) + return 'I didn\'t understand what you wrote. Try typing "help".' + +def helpText(): + return '`This is a help message that you can modify.`' + + +def addGif(url): + webpUrl = seventv.get_webp_url(url) + try: + webp_data = requests.get(webpUrl).content + except requests.exceptions.RequestException: + return ("Invalid URL") + + image = pyvips.Image.new_from_buffer(webp_data, '') + gif_data = image.write_to_buffer('.gif') + + return gif_data \ No newline at end of file diff --git a/7tv.py b/seventv.py similarity index 89% rename from 7tv.py rename to seventv.py index 739d37b..2cad4f9 100644 --- a/7tv.py +++ b/seventv.py @@ -1,8 +1,7 @@ import requests -import imageio -import io -imageio.plugins.freeimage.download() - +#import imageio +#import io +#imageio.plugins.freeimage.download() def get_webp_url(url): emote_id = url[23:] @@ -17,6 +16,8 @@ def get_webp_url(url): return ('No 128x128 file detected') +''' +Old function that might be used later def webp_to_gif(url): # Download the webp file @@ -35,7 +36,6 @@ def webp_to_gif(url): # Return the GIF data as a bytes object return gif_buffer.getvalue() - - +'''