diff --git a/.replit b/.replit deleted file mode 100644 index 2be7a0e..0000000 --- a/.replit +++ /dev/null @@ -1,2 +0,0 @@ -language = "python3" -run = "chmod +x ./repl.deploy && ./repl.deploy python main.py" diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index f3d5ac6..0000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,7 +0,0 @@ -# Contributor Code of Conduct - -lol what - -just have fun friendos!! - -make sure that BLAHAJ would approve of what you do otherwise [this](https://www.youtube.com/watch?v=5AzT5nQh8bk) might happen diff --git a/cogs/fun.py b/cogs/fun.py deleted file mode 100644 index 9e0e61d..0000000 --- a/cogs/fun.py +++ /dev/null @@ -1,98 +0,0 @@ -import discord -from discord.ext import commands -from discord_slash import cog_ext -from discord_slash.utils.manage_commands import create_option - -class Fun(commands.Cog): - def __init__(self, bot): - self.bot = bot - - @cog_ext.cog_slash(name="hug", description="everyone needs a hug once in a while <3", - options=[create_option( - name="recipient", - description="Whom do you want to hug?", - option_type=6, #corresponds to USER - required=False), - create_option( - name="reason", - description="Why do you want to hug them?", - option_type=3, #corresponds to STRING - required=False) - ]) - async def hug(self, ctx, recipient=None, reason=None): - mention = recipient.id if recipient else None - myid = ctx.author_id - if not reason: - reason = "no reason, you simply deserve it. yeet" - if not mention: - await ctx.send(content="Who do you want to hug?") - elif mention == myid: - await ctx.send(content="Does someone need a hug? [*source* ]") - else: - await ctx.send("<@{mention}> Everbody needs a hug. It changes your metabolism:\n Reason: {reason}".format( - mention=mention, reason=reason), - file=discord.File('./images/hug.gif')) - - @cog_ext.cog_slash(name="arrest", description="for some reason blahajgangers wanted to arrest one another?", - options=[create_option( - name="recipient", - description="Whom do you want to arrest?", - option_type=6, #corresponds to USER - required=False), - create_option( - name="reason", - description="Why should they be arrested?", - option_type=3, #corresponds to STRING - required=False) - ]) - async def arrest(self, ctx, recipient=None, reason=None): - mention = recipient.id if recipient else None - myid = ctx.author_id - if not reason: - reason = "yeet! just for fun :)" - if not mention: - await ctx.send(content="Whom should I arrest?") - elif mention == myid: - await ctx.send(content="Ha! you can't arrest yourself.") - else: - await ctx.send( - content="<@{mention}>, You're under arrest! \n reason: {reason}".format( - mention=mention, reason=reason)) - - @cog_ext.cog_slash(name="yeet", description="yeet someone... you know you want to", - options=[create_option( - name="recipient", - description="Who do you want to yeet?", - option_type=6, #corresponds to USER - required=False), - create_option( - name="reason", - description="Why do you want to yeet them?", - option_type=3, #corresponds to STRING - required=False) - ]) - async def yeet(self, ctx, recipient=None, reason=None): - mention = recipient.id if recipient else None - myid = ctx.author_id - if not reason: - reason = "'Not every yeet has a reason' - Blahajamin Franklin" - if not mention: - await ctx.send(content="Okay, but who do you want to yeet?") - elif mention == myid: - await ctx.send(content="You yeet yourself. Congratulations, you played yourself...") - else: - await ctx.send("<@{mention}> ya been yeeted, friendo! Enjoy the flight!\n Reason: {reason}".format( - mention=mention, reason=reason), - file=discord.File('./images/yeet-rafiki.gif')) - - @cog_ext.cog_slash(name="elmoash", description="gif of ash morphing into elmo") - async def elmoash(self, ctx): - await ctx.send(content="https://tenor.com/view/ashwin-rise-elmo-meme-lord-rise-ashwin-meme-lord-rise-gif-22312460") - - @cog_ext.cog_slash(name="whereismyblahaj", description="find your blahaj (great ad for a dating site)") - async def whereismyblahaj(self, ctx): - mention = ctx.author_id - await ctx.send("<@{mention}> I found your Blahaj but you may not like where it is...".format(mention=mention), file=discord.File('./images/WHEREISMYBLAHAJ.png')) - -def setup(bot): - bot.add_cog(Fun(bot)) diff --git a/cogs/gifts.py b/cogs/gifts.py deleted file mode 100644 index 2b12665..0000000 --- a/cogs/gifts.py +++ /dev/null @@ -1,72 +0,0 @@ -import discord -from discord.ext import commands -from discord_slash import cog_ext -from discord_slash.utils.manage_commands import create_option - -import glob, random - -class Gifts(commands.Cog): - def __init__(self, bot): - self.bot = bot - - @cog_ext.cog_slash(name="colors", description="gift a pride flag!", - options=[create_option( - name="recipient", - description="Who do you want to give this to?", - option_type=6, #corresponds to USER - required=False), - create_option( - name="reason", - description="Why are you gifting this to them?", - option_type=3, #corresponds to STRING - required=False) - ]) - async def colors(self, ctx, recipient=None, reason=None): - mention = recipient.id if recipient else None - myid = ctx.author_id - if not reason: - reason = "no reason, you simply deserve it. yeet" - if not mention: - await ctx.send(content="To whom should I send a gift?") - elif mention == myid: - await ctx.send(content="Ha! you can't gift yourself.") - - else: - path = ["./images/flags/*.png"] - random_flag = glob.glob(random.choice(path)) - await ctx.send( - "<@{mention}> Here's a gift from blahaj:\n".format( - mention=mention, reason=reason), - file=discord.File(random.choice(random_flag))) - await ctx.send(content="I'm making copies... Move, I'm gay [*source* ]") - - @cog_ext.cog_slash(name="gift", description="gift a friendo a blahaj!", - options=[create_option( - name="recipient", - description="Who do you want to give this to?", - option_type=6, #corresponds to USER - required=False), - create_option( - name="reason", - description="Why are you gifting this to them?", - option_type=3, #corresponds to STRING - required=False) - ]) - async def gift(self, ctx, recipient=None, reason=None): - mention = recipient.id if recipient else None - myid = ctx.author_id - if not reason: - reason = "no reason, you simply deserve it. yeet" - if not mention: - await ctx.send(content="To whom should I send a gift?") - elif mention == myid: - await ctx.send(content="Ha! you can't gift yourself.") - else: - await ctx.send( - content="<@{mention}>, here's a plushie for you!\n reason: {reason}".format( - mention=mention, reason=reason), - file=discord.File('./images/giftBlahaj.png')) - await ctx.send(content="It's a avocado... thanks <3 [*source* ]") - -def setup(bot): - bot.add_cog(Gifts(bot)) diff --git a/cogs/utils.py b/cogs/utils.py deleted file mode 100644 index 4870a76..0000000 --- a/cogs/utils.py +++ /dev/null @@ -1,44 +0,0 @@ -import discord -from discord.ext import commands -from discord_slash import cog_ext -from discord_slash.utils.manage_commands import create_option - -class Utils(commands.Cog): - def __init__(self, client): - self.client = client - - @cog_ext.cog_slash(name="contribute", description="here's the repo link to contribute to pride bot!") - async def contribute(self, ctx): - #todo add a dm message with the tree structure of this repo - await ctx.send(content="Want to make Pridebot even better? Feel free to contribute at https://github.com/tyffical/Pridebot ", hidden=True) - - @cog_ext.cog_slash(name="afk", description="set your afk status so that it will show up when you're tagged", - options=[create_option( - name="reason", - description="Why will you be afk?", - option_type=3, #corresponds to STRING - required=False) - ]) - async def afk(self, ctx, reason = "They didn't leave a reason!"): - if ctx.author in self.client.afkdict: - self.client.afkdict.pop(ctx.author) - await ctx.send('Welcome back! You are no longer afk.', hidden=True) - else: - self.client.afkdict[ctx.author] = reason - await ctx.send(content="You are now afk. Beware of the real world!", hidden=True) - - @cog_ext.cog_slash(name="invite", description="Invite link for blahaj discord server!") - async def invite(self, ctx): - await ctx.send(content="Here's the invite link 🦈 https://blahaj.lol/discord 🦈", hidden=True) - - @cog_ext.cog_slash(name="help", description="Shows a list of all commands and what it does") - async def help(self, ctx): - embed=discord.Embed() - embed=discord.Embed(title="Here are all the slash commands you can use with pridebot:") - for key in self.client.better_commands: - embed.add_field(name="/"+key, value=self.client.better_commands[key], inline=False) - await ctx.send(embed=embed,hidden=True) - - -def setup(bot): - bot.add_cog(Utils(bot)) diff --git a/data/emojis.py b/data/emojis.py deleted file mode 100644 index 69b4241..0000000 --- a/data/emojis.py +++ /dev/null @@ -1,66 +0,0 @@ -# emoji codes https://emojiterra.com/ -# emoji codes https://emojigraph.org/ - -#emojis - -#default -> unicode (see emojiterra or emojigraph for codes) -default_map = { - "rainbow_flag": "\U0001f3f3\uFE0F\u200D\U0001f308", - "rainbow": "\U0001f308", - "rocket": "\U0001f680", - "sparkles": "\u2728", - "night_with_stars": "\U0001f303", - "angry": "\U0001f620", - "sunrise": "\U0001f305", - "pirate_flag": "\U0001f3f4\u200D\u2620\uFE0F", - "england": - "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f", - "motorboat": "\U0001f6e5\uFE0F", - "isle_of_man": "\U0001f1ee\U0001f1f2", - "tada": "\U0001F389", - "regional_indicator_p": "\U0001F1F5", - "regional_indicator_a": "\U0001F1E6", - "regional_indicator_r": "\U0001F1F7", - "regional_indicator_t": "\U0001F1F9", - "regional_indicator_y": "\U0001F1FE", - "white_check_mark": "\u2705", - "x": "\u274C", - "smiling_face_with_hearts": "\U0001f970", - "watermelon": "\U0001F349", - "regional_indicator_o": "\U0001f1f4", - "regional_indicator_l": "\U0001f1f1", - "o2": "\U0001f17e\uFE0F", - "flag_us": "\U0001f1fa\U0001f1f8", - "older_adult":"\U0001f9d3\U0001f3fb", - "flag_in": "\U0001f1ee\U0001f1f3", - "regional_indicator_m": "\U0001f1f2", - "regional_indicator_e": "\U0001f1ea", - "m": "\u24C2\uFE0F", - "e_mail": "\U0001f4e7", - "flag_vn": "\U0001f1fb\U0001f1f3", - "thunder_cloud_rain": "\u26C8", - "cloud_lightning": "\U0001f329", - "yawning_face": "\U0001f971", - "sleeping": "\U0001f634", - "shushing_face": "\U0001f92b", - "exploding_head": "\U0001f92f", - "pizza": "\U0001f355", - "expressionless": "\U0001F611", - "pleading_face": "\U0001f97a", - "zap": "\uE13D", - "face_exhaling": "\U0001f62e\u000200d\u0001f4a8" -} -#TODO: find a way to automate getting the unicodes (web scraping?) - -#custom -> discord.Emoji objects -custom_list = [ - "blahajyeet", "prideblahaj", "partyblahaj", "justblahaj", "rip", - "melonblahaj", "ryancoin", "angrypinghaj", "blahajcry", "royalblahaj", - "rainbowblahaj", "spaceblahaj", "blahajoof", "pride_heart_trans", - "pride_heart_pocpride", "pride_heart_pan", "pride_heart_nonbinary", - "pride_heart_lesbian", "pride_heart_genderqueer", "pride_heart_gay", - "pride_heart_bi", "pride_heart_aro", "pride_heart_ace", "initinit", - "blaheart", "melonBLAHAJ", "yaay", "blahajuwu", "mlhblahaj", "gamerhaj", "adam", "awwblahaj", - "elonsmoke", "meow_coffee", "catclown", "LMAO", "crii", "blobdance", "meow_code", "meow_heart","susblahaj", "blasmart", "blahajcrying" -] -custom_map = {} diff --git a/data/ids.py b/data/ids.py deleted file mode 100644 index fd1227e..0000000 --- a/data/ids.py +++ /dev/null @@ -1,3 +0,0 @@ -role_ids = {"proud_friendo": 849425044345716756, "pun_master": 842825815808409632} -channel_ids = {"onlypuns": 842807004879650826, "rant": 838861911374037062, "feed": 871070049291608064} -guild_ids = {"blahajgang": 825807863146479657} diff --git a/fun.py b/fun.py new file mode 100644 index 0000000..7f635ab --- /dev/null +++ b/fun.py @@ -0,0 +1,66 @@ +import discord +from discord import option +from discord.ext import commands + + +class Fun(commands.Cog): + + def __init__(self, bot): + self.bot = bot + + @commands.slash_command(name="hug", + description="everyone needs a hug once in a while <3" + ) + @option("recipient", + discord.User, + description="Whom do you want to hug?", + required=False) + @option("reason", description="Why do you want to hug them?", required=False) + async def hug(self, ctx: discord.ApplicationContext, + recipient: discord.Member, reason: str): + mention = recipient.id if recipient else None + if not reason: + reason = "no reason, you simply deserve it. yeet" + if not mention: + await ctx.send_response(content="Who do you want to hug?") + elif mention == ctx.author.id: + await ctx.send_response( + content= + "Does someone need a hug? [*source* ]" + ) + else: + await ctx.send_response( + "<@{mention}> Everbody needs a hug. It changes your metabolism:\n Reason: {reason}" + .format(mention=mention, reason=reason), + file=discord.File('images/hug.gif') + ) # change this back to the right gif at some point + + @commands.slash_command(name="yeet", + description="yeet someone... you know you want to") + @option("recipient", + discord.User, + description="Who do you want to yeet?", + required=False) + @option("reason", + description="Why do you want to yeet them?", + required=False) + async def yeet(self, ctx: discord.ApplicationContext, + recipient: discord.Member, reason: str): + mention = recipient.id if recipient else None + myid = ctx.author.id + if not reason: + reason = "'Not every yeet has a reason' - Blahajamin Franklin" + if not mention: + await ctx.send_response(content="Okay, but who do you want to yeet?") + elif mention == myid: + await ctx.send_response( + content="You yeet yourself. Congratulations, you played yourself...") + else: + await ctx.send_response( + "<@{mention}> ya been yeeted, friendo! Enjoy the flight!\n Reason: {reason}" + .format(mention=mention, reason=reason), + file=discord.File('./images/yeet-rafiki.gif')) + + +def setup(bot): + bot.add_cog(Fun(bot)) diff --git a/guilds.json b/guilds.json new file mode 100644 index 0000000..cc99801 --- /dev/null +++ b/guilds.json @@ -0,0 +1,4 @@ +{ + "blahajgang": 825807863146479657, + "tyfficult": 869022453903548456 +} \ No newline at end of file diff --git a/images/WHEREISMYBLAHAJ.png b/images/WHEREISMYBLAHAJ.png deleted file mode 100644 index a2cf489..0000000 Binary files a/images/WHEREISMYBLAHAJ.png and /dev/null differ diff --git a/images/flags/5.png b/images/flags/5.png index 660544f..e69de29 100644 Binary files a/images/flags/5.png and b/images/flags/5.png differ diff --git a/images/flags/6.png b/images/flags/6.png index db74c54..e69de29 100644 Binary files a/images/flags/6.png and b/images/flags/6.png differ diff --git a/images/flags/7.png b/images/flags/7.png index 547e6bf..e69de29 100644 Binary files a/images/flags/7.png and b/images/flags/7.png differ diff --git a/images/flags/8.png b/images/flags/8.png index d3e3638..e69de29 100644 Binary files a/images/flags/8.png and b/images/flags/8.png differ diff --git a/images/flags/9.png b/images/flags/9.png index 29849e9..e69de29 100644 Binary files a/images/flags/9.png and b/images/flags/9.png differ diff --git a/images/giftBlahaj.png b/images/giftBlahaj.png deleted file mode 100644 index 9eab33e..0000000 Binary files a/images/giftBlahaj.png and /dev/null differ diff --git a/main.py b/main.py index a8930fe..e31470f 100644 --- a/main.py +++ b/main.py @@ -1,290 +1,144 @@ import discord -from discord.ext import commands -from discord_slash import SlashCommand -from discord_slash.utils.manage_commands import get_all_commands +import json +import os +import random +import re -import os, re, time, requests, random, time -from git import Repo +intents = discord.Intents.default() +intents.members = True +intents.message_content = True -from dotenv import load_dotenv -load_dotenv() +global afk_dict +afk_dict = {} +custom_emoji = {} -from scripts.keep_alive import keep_alive +bot = discord.Bot(intents=intents) +bot.load_extension("fun") +bot.load_extension("utils") -from data.ids import role_ids, channel_ids, guild_ids -from data.emojis import default_map, custom_list +with open('guilds.json') as f: + guilds = json.load(f) -# global vars -client = commands.Bot(command_prefix='!', intents=discord.Intents.all()) -slash = SlashCommand(client, sync_commands=True) +with open('roles.json') as f: + roles = json.load(f) -# response = requests.get("https://discord.com/oauth2/849471740052504606") -# remaining_requests = response.headers.get('X-RateLimit-Limit') -# print(remaining_requests) -# various dicts -custom_map = {} -times = {"last_cry_time": 0} - -# define the afk dict as part of the client, so it can be accessed anywhere -client.afkdict = {} - -#Defines the dictionary with Slashcommand Name:Description as key:value pairs(also as a part of the client) -client.better_commands = {} - -# add cogs -client.load_extension("cogs.fun") -client.load_extension("cogs.gifts") -client.load_extension("cogs.utils") - -# bot startup and status -@client.event +@bot.event async def on_ready(): - #for the help command: getting the slashcommands name and description into the better_commands dictionary - commands = await get_all_commands(client.user.id, os.getenv('TOKEN')) - - #iterating though commands to get name:description pairs - for command in commands: - client.better_commands[command["name"]] = command["description"] - - print("Bot is ready! Logged in as " + str(client.user)) - - repo = Repo("./") - if 'REPL_OWNER' in os.environ and os.environ['REPL_OWNER'] == "tyffical": - host = "Production Repl.it Instance" - else: - host = "Local Development Instance" - await client.get_channel(channel_ids["feed"]).send(f''' SUCCESS! I'M ALIVEEEEEEEEEE - -**Started:** () - -**Current Environment:** {host} - -**Current Commit:** `{repo.head.commit.author.name}` - `{repo.head.commit.message}` -''') - - for emoji in custom_list: - custom_map[emoji] = discord.utils.get(client.emojis, name=emoji) - client.blahajgang_guild = discord.utils.get(client.guilds, id=guild_ids["blahajgang"]) # BLAHAJGang - - # Changes the bot's presence - await client.change_presence(activity=discord.Game("Happy Pride! " + default_map["rainbow_flag"])) - - # Syncs global slash commands - await slash.sync_all_commands() - -# bot message reactions and replies -@client.event -async def on_message(message): - # ignore bot's own message - if message.author.id == client.user.id: - return - - # afk stuff - if message.author in client.afkdict: - await message.channel.send("Welcome back! You are no longer afk.") - client.afkdict.pop(message.author) - for member in message.mentions: - if member != message.author and member in client.afkdict: - await message.reply(content=f"Oh noes! {member.mention} is currently AFK.\nReason: **{client.afkdict[member]}**", delete_after=20) - await message.reply(content=f"This bitch afk. YEET [*source* ]", delete_after=20) - - # split by spaces, commas, periods, etc to get the words in the string - string = re.split(r"[,:. \"'-]+", message.content.lower()) - - #pridebot responding to a mention of its name aka 'the hotword' - responses = ["hey homie", "sup mate?", "why'd you summon me, mate?", "sorry, im busy atm"] - hotword = "".join(string) - if "pridebot" in hotword: - r = requests.head(url="https://discord.com/api/v2/") - try: - await message.reply(f"Rate limit {int(r.headers['Retry-After']) / 60} minutes until activity") - except: - await message.reply(responses[random.randint(0, 3)]) - - # TODO: see if computer vision can be used to detect text or rainbows in images - # general pride react map - pride_words = ["pride", "proud", "rainbow", "gay", "queer", "lgbt", "love", "june", "heart", "jack"] - - for word in pride_words: - if word in string: - await message.add_reaction(default_map["rainbow_flag"]) - await message.add_reaction(custom_map["prideblahaj"]) - - # check if author not "Member" (i.e. bot) -> they have no roles - if not isinstance(message.author, discord.Member): - break - - friendo_role = discord.utils.get(client.blahajgang_guild.roles, id=role_ids["proud_friendo"]) - if friendo_role in message.author.roles: - # proud friendo gets extra reacts, per jack's request - await message.add_reaction(default_map["rainbow"]) - await message.add_reaction(custom_map["rainbowblahaj"]) - await message.add_reaction(custom_map["partyblahaj"]) - - # regex react map for whitespace-sensitive reactions - regex_reacts = { - 'yee+t': [custom_map["blahajyeet"]], - 'partyisland:thevirtualexperience': [ - default_map["regional_indicator_p"], - default_map["regional_indicator_a"], - default_map["regional_indicator_r"], - default_map["regional_indicator_t"], - default_map["regional_indicator_y"], - default_map["white_check_mark"], - default_map["x"] - ], - 'mindblowing': [default_map["exploding_head"]], - 'that\'scool': [default_map["exploding_head"]], - 'holyfruit': [custom_map["melonblahaj"]], - 'bequiet': [default_map["shushing_face"]], - 'shutup': [default_map["shushing_face"]], - } - for regex, reacts in regex_reacts.items(): - if re.search(regex, "".join(message.content.lower().split())) != None: - for react in reacts: - await message.add_reaction(react) - - # identity-specific react map - identity_reacts = { - 'trans': [custom_map["pride_heart_trans"]], - 'poc': [custom_map["pride_heart_pocpride"]], - 'pan': [custom_map["pride_heart_pan"]], - 'nonbinary': [custom_map["pride_heart_nonbinary"]], - 'nb': [custom_map["pride_heart_nonbinary"]], - 'lesbian': [custom_map["pride_heart_lesbian"]], - 'genderqueer': [custom_map["pride_heart_genderqueer"]], - 'gay': [custom_map["pride_heart_gay"]], - 'bi': [custom_map["pride_heart_bi"]], - 'aro': [custom_map["pride_heart_aro"]], - 'ace': [custom_map["pride_heart_ace"]], - 'asexual': [custom_map["pride_heart_ace"]] - } - - for substr, reacts in identity_reacts.items(): - if substr in string: - for react in reacts: - await message.add_reaction(react) - - # people-specific react map - people_reacts = { - 'ryan': [custom_map["ryancoin"]], - 'neel': [custom_map["spaceblahaj"]], - 'vik': [custom_map["mlhblahaj"]], - 'electron': [default_map["zap"]], - 'bailey': [custom_map["awwblahaj"], default_map["flag_vn"]], - 'tiff': [custom_map["royalblahaj"]], - 'tyff': [custom_map["royalblahaj"]], - 'adi': [custom_map["gamerhaj"]], - 'hana': [default_map["sparkles"]], - 'ash': [default_map["regional_indicator_m"], default_map["regional_indicator_e"], default_map["m"], default_map["e_mail"]], - 'mara': [default_map["smiling_face_with_hearts"]], - 'adam': [default_map["isle_of_man"], custom_map["adam"]], - 'rico': [default_map["flag_us"], default_map["flag_in"]], - 'nandan': [default_map["face_exhaling"]] - } - - for substr, reacts in people_reacts.items(): - if substr in string: - for react in reacts: - await message.add_reaction(react) - - # only do fun or emotion reacts if we're not in the rant channel - if message.channel.id != channel_ids["rant"]: - # fun-specific react map - fun_reacts = { - 'iom': [default_map["isle_of_man"], custom_map["adam"]], - 'straight': [default_map["pirate_flag"]], - 'blahaj': [custom_map["justblahaj"]], - 'shark': [custom_map["justblahaj"]], - 'melon': [custom_map["melonblahaj"]], - 'holy fruit': [custom_map["melonblahaj"]], - 'uwu': [custom_map["blahajuwu"]], - 'boomer': [default_map["older_adult"]], - 'rain': [default_map["cloud_lightning"], default_map["thunder_cloud_rain"]], - 'thunderstorm': [default_map["cloud_lightning"], default_map["thunder_cloud_rain"]], - 'thunder': [default_map["cloud_lightning"], default_map["thunder_cloud_rain"]], - 'sleep': [default_map["yawning_face"], default_map["sleeping"]], - 'space': [default_map["rocket"]], - 'innovation': [default_map["rocket"]], - 'motivation': [default_map["rocket"]], - 'night': [default_map["night_with_stars"]], - 'morning': [default_map["sunrise"]], - 'ping': [custom_map["angrypinghaj"]], - 'innit': [default_map["england"]], - 'bruv': [default_map["england"]], - 'manannan': [default_map["motorboat"]], - 'initinit': [custom_map["initinit"]], - 'scream': [custom_map["initinit"]], - 'india': [default_map["flag_in"]], - 'usa': [default_map["flag_us"]], - 'party': [default_map["isle_of_man"], default_map["tada"], custom_map["partyblahaj"]], - 'pizza': [default_map["pizza"]], - 'watermelon': [default_map["watermelon"]], - 'pls': [default_map["pleading_face"]], - 'please': [default_map["pleading_face"]], - 'uh': [default_map["expressionless"]], - 'elon': [custom_map["elonsmoke"]], - 'musk': [custom_map["elonsmoke"]], - 'coffee': [custom_map["meow_coffee"]], - 'clown': [custom_map["catclown"]], - 'dance': [custom_map["blobdance"]], - 'code': [custom_map["meow_code"]], - 'hack': [custom_map["meow_code"]], - 'cat': [custom_map["meow_heart"]], - 'kitty': [custom_map["meow_heart"]], - 'meow': [custom_map["meow_heart"]], - 'sus': [custom_map["susblahaj"]], - 'smart': [custom_map["blasmart"]], - } - - for substr, reacts in fun_reacts.items(): - if substr in string: - for react in reacts: - await message.add_reaction(react) - - # emotion-specific react map - emotion_reacts = { - 'rip': [custom_map["rip"]], - 'oof': [custom_map["blahajoof"]], - 'angry': [default_map["angry"]], - 'anger': [default_map["angry"]], - 'mad': [default_map["angry"]], - 'cry': [custom_map["blahajcrying"], custom_map["crii"]], - 'cri': [custom_map["blahajcrying"], custom_map["crii"]], - 'sad': [custom_map["blahajcry"], custom_map["crii"]], - 'alone': [custom_map["blahajcrying"]], - 'shush': [default_map["shushing_face"]], - 'lmao': [custom_map["LMAO"]] - } - - for substr, reacts in emotion_reacts.items(): - if substr in string: - for react in reacts: - await message.add_reaction(react) - - - - #restricted to #onlypuns channel, per vijay's request - if message.channel.id == channel_ids["onlypuns"] and "pun" in string: - pun_role = discord.utils.get(client.blahajgang_guild.roles, id=role_ids["pun_master"]) - #prevent pinging the pun master if they made the msg - if pun_role not in message.author.roles: - #ping pun master to deliver a needed pun - await message.reply(pun_role.mention) - - if message.channel.id == channel_ids["onlypuns"] and "rate" in string: - pun_role = discord.utils.get(client.blahajgang_guild.roles, id=role_ids["pun_master"]) - #prevent pinging the pun master if they made the msg - if pun_role not in message.author.roles: - #ping pun master to deliver a needed pun - await message.reply(pun_role.mention + " rate 0-10") - - #react to msgs in #rant-here-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa but only if it has been more than an hour since last cry react, per neel's request - if message.channel.id == channel_ids["rant"]: - if time.time() > times["last_cry_time"] + 3600: - await message.add_reaction(custom_map["blahajcry"]) - times["last_cry_time"] = time.time() - -keep_alive() -client.run(os.getenv('TOKEN')) + print(f"Logged in as {bot.user} (ID: {bot.user.id if bot.user else None})") + print("------") + + async for guild in bot.fetch_guilds(limit=10): + full_guild = bot.get_guild(guild.id) + if full_guild: + for emoji in full_guild.emojis: + custom_emoji[emoji.name] = emoji + + game = discord.Game("Happy Pride! 🏳️‍🌈") + await bot.change_presence(status=discord.Status.online, activity=game) + + +@bot.event +async def on_message(message: discord.Message): + if bot.user and message.author.id == bot.user.id: + return + if message.guild is None: + return + + member = message.guild.get_member(message.author.id) + words = re.split(r"[,:. \"'-]+", message.content.lower()) + afk_dict = globals()["afk_dict"] + + # AFK Member Handling + if message.author.id in afk_dict: + await message.reply("Welcome back! You are no longer AFK.") + afk_dict.pop(message.author.id) + for member in message.mentions: + if member != message.author and member.id in afk_dict: + await message.reply( + content= + f"{member.mention} is currently AFK: **{afk_dict[member.id]}**", + delete_after=20) + + # Pridebot responding to a mention of its name aka 'the hotword' + responses = [ + "hey homie", "sup mate?", "why'd you summon me, mate?", + "sorry, im busy atm" + ] + if "pridebot" in "".join(words): + await message.reply(responses[random.randint(0, 3)]) + + # Responding to pride words + pride_words = [ + "pride", "proud", "rainbow", "gay", "queer", "lgbt", "love", "june", + "heart" + ] + + for word in words: + if word in pride_words: + await message.add_reaction("🏳️‍🌈") + await message.add_reaction(custom_emoji["gaydragon"]) + await message.add_reaction(custom_emoji["prideblahaj"]) + + if (type(message.guild) is discord.Guild + and message.guild.id == guilds["blahajgang"] + and type(member) is discord.Member + and member.get_role(roles["proud_friendo"]) is not None): + await message.add_reaction("🌈") + await message.add_reaction(custom_emoji["rainbowblahaj"]) + await message.add_reaction(custom_emoji["partyblahaj"]) + + # React to different words with custom emoji + word_reacts = { + 'yee+t': [custom_emoji["blahajyeet"]], + 'mindblowing': ["🤯"], + 'that\'scool': ["🤯"], + 'holyfruit': [custom_emoji["melonblahaj"]], + 'bequiet': ["🤫"], + 'shutup': ["🤫"], + 'neel': [custom_emoji["spaceblahaj"]], + 'tiff': [custom_emoji["royalblahaj"]], + 'blahaj': [custom_emoji["justblahaj"]], + 'shark': [custom_emoji["justblahaj"]], + 'uwu': [custom_emoji["blahajuwu"]], + 'sleep': ["🥱", "😴"], + 'ping': [custom_emoji["angrypinghaj"]], + 'coffee': [custom_emoji["meow_coffee"]], + 'clown': [custom_emoji["catclown"]], + 'dance': [custom_emoji["blobdance"]], + 'code': [custom_emoji["meow_code"]], + 'hack': [custom_emoji["meow_code"]], + 'cat': [custom_emoji["meow_heart"]], + 'kitty': [custom_emoji["meow_heart"]], + 'meow': [custom_emoji["meow_heart"]], + 'sus': [custom_emoji["susblahaj"]], + } + for regex, reacts in word_reacts.items(): + if re.search(regex, "".join(message.content.lower().split())) is not None: + for react in reacts: + await message.add_reaction(react) + + # identity-specific react map + identity_reacts = { + 'trans': [custom_emoji["pride_heart_trans"]], + 'poc': [custom_emoji["pride_heart_pocpride"]], + 'pan': [custom_emoji["pride_heart_pan"]], + 'nonbinary': [custom_emoji["pride_heart_nonbinary"]], + 'nb': [custom_emoji["pride_heart_nonbinary"]], + 'lesbian': [custom_emoji["pride_heart_lesbian"]], + 'genderqueer': [custom_emoji["pride_heart_genderqueer"]], + 'gay': [custom_emoji["pride_heart_gay"]], + 'bi': [custom_emoji["pride_heart_bi"]], + 'aro': [custom_emoji["pride_heart_aro"]], + 'ace': [custom_emoji["pride_heart_ace"]], + 'asexual': [custom_emoji["pride_heart_ace"]] + } + + for substr, reacts in identity_reacts.items(): + if substr in words: + for react in reacts: + await message.add_reaction(react) + + +token = os.environ['TOKEN'] +bot.run(token) diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index fe81f50..0000000 --- a/poetry.lock +++ /dev/null @@ -1,491 +0,0 @@ -[[package]] -name = "aiohttp" -version = "3.7.4.post0" -description = "Async http client/server framework (asyncio)" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -async-timeout = ">=3.0,<4.0" -attrs = ">=17.3.0" -chardet = ">=2.0,<5.0" -multidict = ">=4.5,<7.0" -typing-extensions = ">=3.6.5" -yarl = ">=1.0,<2.0" - -[package.extras] -speedups = ["aiodns", "brotlipy", "cchardet"] - -[[package]] -name = "async-timeout" -version = "3.0.1" -description = "Timeout context manager for asyncio programs" -category = "main" -optional = false -python-versions = ">=3.5.3" - -[[package]] -name = "attrs" -version = "21.2.0" -description = "Classes Without Boilerplate" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"] -docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"] - -[[package]] -name = "chardet" -version = "4.0.0" -description = "Universal encoding detector for Python 2 and 3" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "click" -version = "8.0.1" -description = "Composable command line interface toolkit" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "codebug-tether" -version = "0.9.1" -description = "Control CodeBug over Serial USB." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "colorama" -version = "0.4.4" -description = "Cross-platform colored terminal text." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "discord" -version = "1.7.3" -description = "A mirror package for discord.py. Please install that instead." -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -"discord.py" = ">=1.7.3" - -[[package]] -name = "discord-py-slash-command" -version = "2.3.2" -description = "A simple interaction handler for discord.py." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -aiohttp = "*" -"discord.py" = "*" - -[package.extras] -dev = ["black", "flake8", "isort", "sphinx", "sphinx-rtd-theme"] -lint = ["black", "flake8", "isort", "sphinx", "sphinx-rtd-theme"] -readthedocs = ["sphinx", "sphinx-rtd-theme"] - -[[package]] -name = "discord.py" -version = "1.7.3" -description = "A Python wrapper for the Discord API" -category = "main" -optional = false -python-versions = ">=3.5.3" - -[package.dependencies] -aiohttp = ">=3.6.0,<3.8.0" - -[package.extras] -docs = ["sphinx (==3.0.3)", "sphinxcontrib-trio (==1.1.2)", "sphinxcontrib-websupport"] -voice = ["PyNaCl (>=1.3.0,<1.5)"] - -[[package]] -name = "flask" -version = "2.0.1" -description = "A simple framework for building complex web applications." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -click = ">=7.1.2" -itsdangerous = ">=2.0" -Jinja2 = ">=3.0" -Werkzeug = ">=2.0" - -[package.extras] -async = ["asgiref (>=3.2)"] -dotenv = ["python-dotenv"] - -[[package]] -name = "gitdb" -version = "4.0.7" -description = "Git Object Database" -category = "main" -optional = false -python-versions = ">=3.4" - -[package.dependencies] -smmap = ">=3.0.1,<5" - -[[package]] -name = "gitpython" -version = "3.1.20" -description = "Python Git Library" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -gitdb = ">=4.0.1,<5" -typing-extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.10\""} - -[[package]] -name = "idna" -version = "3.2" -description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "itsdangerous" -version = "2.0.1" -description = "Safely pass data to untrusted environments and back." -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "jinja2" -version = "3.0.1" -description = "A very fast and expressive template engine." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "markupsafe" -version = "2.0.1" -description = "Safely add untrusted strings to HTML/XML markup." -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "multidict" -version = "5.1.0" -description = "multidict implementation" -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "python-dotenv" -version = "0.18.0" -description = "Read key-value pairs from a .env file and set them as environment variables" -category = "main" -optional = false -python-versions = "*" - -[package.extras] -cli = ["click (>=5.0)"] - -[[package]] -name = "smmap" -version = "4.0.0" -description = "A pure Python implementation of a sliding window memory map manager" -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "typing-extensions" -version = "3.10.0.0" -description = "Backported and Experimental Type Hints for Python 3.5+" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "werkzeug" -version = "2.0.1" -description = "The comprehensive WSGI web application library." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -watchdog = ["watchdog"] - -[[package]] -name = "yarl" -version = "1.6.3" -description = "Yet another URL library" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -idna = ">=2.0" -multidict = ">=4.0" - -[metadata] -lock-version = "1.1" -python-versions = "^3.8" -content-hash = "0d2de86611c158d6ebd43c210b4cd192c294b21efa0eeabc5873ab8c71a9d391" - -[metadata.files] -aiohttp = [ - {file = "aiohttp-3.7.4.post0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:3cf75f7cdc2397ed4442594b935a11ed5569961333d49b7539ea741be2cc79d5"}, - {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:4b302b45040890cea949ad092479e01ba25911a15e648429c7c5aae9650c67a8"}, - {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:fe60131d21b31fd1a14bd43e6bb88256f69dfc3188b3a89d736d6c71ed43ec95"}, - {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:393f389841e8f2dfc86f774ad22f00923fdee66d238af89b70ea314c4aefd290"}, - {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:c6e9dcb4cb338d91a73f178d866d051efe7c62a7166653a91e7d9fb18274058f"}, - {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:5df68496d19f849921f05f14f31bd6ef53ad4b00245da3195048c69934521809"}, - {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:0563c1b3826945eecd62186f3f5c7d31abb7391fedc893b7e2b26303b5a9f3fe"}, - {file = "aiohttp-3.7.4.post0-cp36-cp36m-win32.whl", hash = "sha256:3d78619672183be860b96ed96f533046ec97ca067fd46ac1f6a09cd9b7484287"}, - {file = "aiohttp-3.7.4.post0-cp36-cp36m-win_amd64.whl", hash = "sha256:f705e12750171c0ab4ef2a3c76b9a4024a62c4103e3a55dd6f99265b9bc6fcfc"}, - {file = "aiohttp-3.7.4.post0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:230a8f7e24298dea47659251abc0fd8b3c4e38a664c59d4b89cca7f6c09c9e87"}, - {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:2e19413bf84934d651344783c9f5e22dee452e251cfd220ebadbed2d9931dbf0"}, - {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:e4b2b334e68b18ac9817d828ba44d8fcb391f6acb398bcc5062b14b2cbeac970"}, - {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:d012ad7911653a906425d8473a1465caa9f8dea7fcf07b6d870397b774ea7c0f"}, - {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:40eced07f07a9e60e825554a31f923e8d3997cfc7fb31dbc1328c70826e04cde"}, - {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:209b4a8ee987eccc91e2bd3ac36adee0e53a5970b8ac52c273f7f8fd4872c94c"}, - {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:14762875b22d0055f05d12abc7f7d61d5fd4fe4642ce1a249abdf8c700bf1fd8"}, - {file = "aiohttp-3.7.4.post0-cp37-cp37m-win32.whl", hash = "sha256:7615dab56bb07bff74bc865307aeb89a8bfd9941d2ef9d817b9436da3a0ea54f"}, - {file = "aiohttp-3.7.4.post0-cp37-cp37m-win_amd64.whl", hash = "sha256:d9e13b33afd39ddeb377eff2c1c4f00544e191e1d1dee5b6c51ddee8ea6f0cf5"}, - {file = "aiohttp-3.7.4.post0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:547da6cacac20666422d4882cfcd51298d45f7ccb60a04ec27424d2f36ba3eaf"}, - {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:af9aa9ef5ba1fd5b8c948bb11f44891968ab30356d65fd0cc6707d989cd521df"}, - {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:64322071e046020e8797117b3658b9c2f80e3267daec409b350b6a7a05041213"}, - {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:bb437315738aa441251214dad17428cafda9cdc9729499f1d6001748e1d432f4"}, - {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:e54962802d4b8b18b6207d4a927032826af39395a3bd9196a5af43fc4e60b009"}, - {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:a00bb73540af068ca7390e636c01cbc4f644961896fa9363154ff43fd37af2f5"}, - {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:79ebfc238612123a713a457d92afb4096e2148be17df6c50fb9bf7a81c2f8013"}, - {file = "aiohttp-3.7.4.post0-cp38-cp38-win32.whl", hash = "sha256:515dfef7f869a0feb2afee66b957cc7bbe9ad0cdee45aec7fdc623f4ecd4fb16"}, - {file = "aiohttp-3.7.4.post0-cp38-cp38-win_amd64.whl", hash = "sha256:114b281e4d68302a324dd33abb04778e8557d88947875cbf4e842c2c01a030c5"}, - {file = "aiohttp-3.7.4.post0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:7b18b97cf8ee5452fa5f4e3af95d01d84d86d32c5e2bfa260cf041749d66360b"}, - {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:15492a6368d985b76a2a5fdd2166cddfea5d24e69eefed4630cbaae5c81d89bd"}, - {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bdb230b4943891321e06fc7def63c7aace16095be7d9cf3b1e01be2f10fba439"}, - {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:cffe3ab27871bc3ea47df5d8f7013945712c46a3cc5a95b6bee15887f1675c22"}, - {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:f881853d2643a29e643609da57b96d5f9c9b93f62429dcc1cbb413c7d07f0e1a"}, - {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:a5ca29ee66f8343ed336816c553e82d6cade48a3ad702b9ffa6125d187e2dedb"}, - {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:17c073de315745a1510393a96e680d20af8e67e324f70b42accbd4cb3315c9fb"}, - {file = "aiohttp-3.7.4.post0-cp39-cp39-win32.whl", hash = "sha256:932bb1ea39a54e9ea27fc9232163059a0b8855256f4052e776357ad9add6f1c9"}, - {file = "aiohttp-3.7.4.post0-cp39-cp39-win_amd64.whl", hash = "sha256:02f46fc0e3c5ac58b80d4d56eb0a7c7d97fcef69ace9326289fb9f1955e65cfe"}, - {file = "aiohttp-3.7.4.post0.tar.gz", hash = "sha256:493d3299ebe5f5a7c66b9819eacdcfbbaaf1a8e84911ddffcdc48888497afecf"}, -] -async-timeout = [ - {file = "async-timeout-3.0.1.tar.gz", hash = "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f"}, - {file = "async_timeout-3.0.1-py3-none-any.whl", hash = "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3"}, -] -attrs = [ - {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"}, - {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"}, -] -chardet = [ - {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, - {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, -] -click = [ - {file = "click-8.0.1-py3-none-any.whl", hash = "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"}, - {file = "click-8.0.1.tar.gz", hash = "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a"}, -] -codebug-tether = [ - {file = "codebug_tether-0.9.1.tar.gz", hash = "sha256:59025d882ee9dd2f995cc7b09d434bd213adaff2fa3dfa7876604d41b0f614be"}, -] -colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, -] -discord = [ - {file = "discord-1.7.3-py3-none-any.whl", hash = "sha256:248d728356e149c818a81b94659047a19305ea1623d4810bbb342f6b7df55f36"}, - {file = "discord-1.7.3.tar.gz", hash = "sha256:846dd3d66888c2e0a8bd9120d8778a0fe088c003a7f6451668497f14e322a304"}, -] -discord-py-slash-command = [ - {file = "discord-py-slash-command-2.3.2.tar.gz", hash = "sha256:ab3e73d683bb0ed098902c33de3c87c8a05c1e5dbe50682752dcc3fc0db4ce6a"}, - {file = "discord_py_slash_command-2.3.2-py3-none-any.whl", hash = "sha256:3347442b70484b02eba40490f946cdfd58e080c4f698f9e2960f134d28faa41d"}, -] -"discord.py" = [ - {file = "discord.py-1.7.3-py3-none-any.whl", hash = "sha256:c6f64db136de0e18e090f6752ea68bdd4ab0a61b82dfe7acecefa22d6477bb0c"}, - {file = "discord.py-1.7.3.tar.gz", hash = "sha256:462cd0fe307aef8b29cbfa8dd613e548ae4b2cb581d46da9ac0d46fb6ea19408"}, -] -flask = [ - {file = "Flask-2.0.1-py3-none-any.whl", hash = "sha256:a6209ca15eb63fc9385f38e452704113d679511d9574d09b2cf9183ae7d20dc9"}, - {file = "Flask-2.0.1.tar.gz", hash = "sha256:1c4c257b1892aec1398784c63791cbaa43062f1f7aeb555c4da961b20ee68f55"}, -] -gitdb = [ - {file = "gitdb-4.0.7-py3-none-any.whl", hash = "sha256:6c4cc71933456991da20917998acbe6cf4fb41eeaab7d6d67fbc05ecd4c865b0"}, - {file = "gitdb-4.0.7.tar.gz", hash = "sha256:96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005"}, -] -gitpython = [ - {file = "GitPython-3.1.20-py3-none-any.whl", hash = "sha256:b1e1c269deab1b08ce65403cf14e10d2ef1f6c89e33ea7c5e5bb0222ea593b8a"}, - {file = "GitPython-3.1.20.tar.gz", hash = "sha256:df0e072a200703a65387b0cfdf0466e3bab729c0458cf6b7349d0e9877636519"}, -] -idna = [ - {file = "idna-3.2-py3-none-any.whl", hash = "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a"}, - {file = "idna-3.2.tar.gz", hash = "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3"}, -] -itsdangerous = [ - {file = "itsdangerous-2.0.1-py3-none-any.whl", hash = "sha256:5174094b9637652bdb841a3029700391451bd092ba3db90600dea710ba28e97c"}, - {file = "itsdangerous-2.0.1.tar.gz", hash = "sha256:9e724d68fc22902a1435351f84c3fb8623f303fffcc566a4cb952df8c572cff0"}, -] -jinja2 = [ - {file = "Jinja2-3.0.1-py3-none-any.whl", hash = "sha256:1f06f2da51e7b56b8f238affdd6b4e2c61e39598a378cc49345bc1bd42a978a4"}, - {file = "Jinja2-3.0.1.tar.gz", hash = "sha256:703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4"}, -] -markupsafe = [ - {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, - {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, -] -multidict = [ - {file = "multidict-5.1.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:b7993704f1a4b204e71debe6095150d43b2ee6150fa4f44d6d966ec356a8d61f"}, - {file = "multidict-5.1.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:9dd6e9b1a913d096ac95d0399bd737e00f2af1e1594a787e00f7975778c8b2bf"}, - {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:f21756997ad8ef815d8ef3d34edd98804ab5ea337feedcd62fb52d22bf531281"}, - {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:1ab820665e67373de5802acae069a6a05567ae234ddb129f31d290fc3d1aa56d"}, - {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:9436dc58c123f07b230383083855593550c4d301d2532045a17ccf6eca505f6d"}, - {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:830f57206cc96ed0ccf68304141fec9481a096c4d2e2831f311bde1c404401da"}, - {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:2e68965192c4ea61fff1b81c14ff712fc7dc15d2bd120602e4a3494ea6584224"}, - {file = "multidict-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:2f1a132f1c88724674271d636e6b7351477c27722f2ed789f719f9e3545a3d26"}, - {file = "multidict-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:3a4f32116f8f72ecf2a29dabfb27b23ab7cdc0ba807e8459e59a93a9be9506f6"}, - {file = "multidict-5.1.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:46c73e09ad374a6d876c599f2328161bcd95e280f84d2060cf57991dec5cfe76"}, - {file = "multidict-5.1.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:018132dbd8688c7a69ad89c4a3f39ea2f9f33302ebe567a879da8f4ca73f0d0a"}, - {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:4b186eb7d6ae7c06eb4392411189469e6a820da81447f46c0072a41c748ab73f"}, - {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:3a041b76d13706b7fff23b9fc83117c7b8fe8d5fe9e6be45eee72b9baa75f348"}, - {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:051012ccee979b2b06be928a6150d237aec75dd6bf2d1eeeb190baf2b05abc93"}, - {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:6a4d5ce640e37b0efcc8441caeea8f43a06addace2335bd11151bc02d2ee31f9"}, - {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:5cf3443199b83ed9e955f511b5b241fd3ae004e3cb81c58ec10f4fe47c7dce37"}, - {file = "multidict-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:f200755768dc19c6f4e2b672421e0ebb3dd54c38d5a4f262b872d8cfcc9e93b5"}, - {file = "multidict-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:05c20b68e512166fddba59a918773ba002fdd77800cad9f55b59790030bab632"}, - {file = "multidict-5.1.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:54fd1e83a184e19c598d5e70ba508196fd0bbdd676ce159feb412a4a6664f952"}, - {file = "multidict-5.1.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:0e3c84e6c67eba89c2dbcee08504ba8644ab4284863452450520dad8f1e89b79"}, - {file = "multidict-5.1.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:dc862056f76443a0db4509116c5cd480fe1b6a2d45512a653f9a855cc0517456"}, - {file = "multidict-5.1.0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:0e929169f9c090dae0646a011c8b058e5e5fb391466016b39d21745b48817fd7"}, - {file = "multidict-5.1.0-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:d81eddcb12d608cc08081fa88d046c78afb1bf8107e6feab5d43503fea74a635"}, - {file = "multidict-5.1.0-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:585fd452dd7782130d112f7ddf3473ffdd521414674c33876187e101b588738a"}, - {file = "multidict-5.1.0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:37e5438e1c78931df5d3c0c78ae049092877e5e9c02dd1ff5abb9cf27a5914ea"}, - {file = "multidict-5.1.0-cp38-cp38-win32.whl", hash = "sha256:07b42215124aedecc6083f1ce6b7e5ec5b50047afa701f3442054373a6deb656"}, - {file = "multidict-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:929006d3c2d923788ba153ad0de8ed2e5ed39fdbe8e7be21e2f22ed06c6783d3"}, - {file = "multidict-5.1.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b797515be8743b771aa868f83563f789bbd4b236659ba52243b735d80b29ed93"}, - {file = "multidict-5.1.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d5c65bdf4484872c4af3150aeebe101ba560dcfb34488d9a8ff8dbcd21079647"}, - {file = "multidict-5.1.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b47a43177a5e65b771b80db71e7be76c0ba23cc8aa73eeeb089ed5219cdbe27d"}, - {file = "multidict-5.1.0-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:806068d4f86cb06af37cd65821554f98240a19ce646d3cd24e1c33587f313eb8"}, - {file = "multidict-5.1.0-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:46dd362c2f045095c920162e9307de5ffd0a1bfbba0a6e990b344366f55a30c1"}, - {file = "multidict-5.1.0-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:ace010325c787c378afd7f7c1ac66b26313b3344628652eacd149bdd23c68841"}, - {file = "multidict-5.1.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:ecc771ab628ea281517e24fd2c52e8f31c41e66652d07599ad8818abaad38cda"}, - {file = "multidict-5.1.0-cp39-cp39-win32.whl", hash = "sha256:fc13a9524bc18b6fb6e0dbec3533ba0496bbed167c56d0aabefd965584557d80"}, - {file = "multidict-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:7df80d07818b385f3129180369079bd6934cf70469f99daaebfac89dca288359"}, - {file = "multidict-5.1.0.tar.gz", hash = "sha256:25b4e5f22d3a37ddf3effc0710ba692cfc792c2b9edfb9c05aefe823256e84d5"}, -] -python-dotenv = [ - {file = "python-dotenv-0.18.0.tar.gz", hash = "sha256:effaac3c1e58d89b3ccb4d04a40dc7ad6e0275fda25fd75ae9d323e2465e202d"}, - {file = "python_dotenv-0.18.0-py2.py3-none-any.whl", hash = "sha256:dd8fe852847f4fbfadabf6183ddd4c824a9651f02d51714fa075c95561959c7d"}, -] -smmap = [ - {file = "smmap-4.0.0-py2.py3-none-any.whl", hash = "sha256:a9a7479e4c572e2e775c404dcd3080c8dc49f39918c2cf74913d30c4c478e3c2"}, - {file = "smmap-4.0.0.tar.gz", hash = "sha256:7e65386bd122d45405ddf795637b7f7d2b532e7e401d46bbe3fb49b9986d5182"}, -] -typing-extensions = [ - {file = "typing_extensions-3.10.0.0-py2-none-any.whl", hash = "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497"}, - {file = "typing_extensions-3.10.0.0-py3-none-any.whl", hash = "sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84"}, - {file = "typing_extensions-3.10.0.0.tar.gz", hash = "sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342"}, -] -werkzeug = [ - {file = "Werkzeug-2.0.1-py3-none-any.whl", hash = "sha256:6c1ec500dcdba0baa27600f6a22f6333d8b662d22027ff9f6202e3367413caa8"}, - {file = "Werkzeug-2.0.1.tar.gz", hash = "sha256:1de1db30d010ff1af14a009224ec49ab2329ad2cde454c8a708130642d579c42"}, -] -yarl = [ - {file = "yarl-1.6.3-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:0355a701b3998dcd832d0dc47cc5dedf3874f966ac7f870e0f3a6788d802d434"}, - {file = "yarl-1.6.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:bafb450deef6861815ed579c7a6113a879a6ef58aed4c3a4be54400ae8871478"}, - {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:547f7665ad50fa8563150ed079f8e805e63dd85def6674c97efd78eed6c224a6"}, - {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:63f90b20ca654b3ecc7a8d62c03ffa46999595f0167d6450fa8383bab252987e"}, - {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:97b5bdc450d63c3ba30a127d018b866ea94e65655efaf889ebeabc20f7d12406"}, - {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:d8d07d102f17b68966e2de0e07bfd6e139c7c02ef06d3a0f8d2f0f055e13bb76"}, - {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:15263c3b0b47968c1d90daa89f21fcc889bb4b1aac5555580d74565de6836366"}, - {file = "yarl-1.6.3-cp36-cp36m-win32.whl", hash = "sha256:b5dfc9a40c198334f4f3f55880ecf910adebdcb2a0b9a9c23c9345faa9185721"}, - {file = "yarl-1.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:b2e9a456c121e26d13c29251f8267541bd75e6a1ccf9e859179701c36a078643"}, - {file = "yarl-1.6.3-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:ce3beb46a72d9f2190f9e1027886bfc513702d748047b548b05dab7dfb584d2e"}, - {file = "yarl-1.6.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:2ce4c621d21326a4a5500c25031e102af589edb50c09b321049e388b3934eec3"}, - {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:d26608cf178efb8faa5ff0f2d2e77c208f471c5a3709e577a7b3fd0445703ac8"}, - {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:4c5bcfc3ed226bf6419f7a33982fb4b8ec2e45785a0561eb99274ebbf09fdd6a"}, - {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:4736eaee5626db8d9cda9eb5282028cc834e2aeb194e0d8b50217d707e98bb5c"}, - {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:68dc568889b1c13f1e4745c96b931cc94fdd0defe92a72c2b8ce01091b22e35f"}, - {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:7356644cbed76119d0b6bd32ffba704d30d747e0c217109d7979a7bc36c4d970"}, - {file = "yarl-1.6.3-cp37-cp37m-win32.whl", hash = "sha256:00d7ad91b6583602eb9c1d085a2cf281ada267e9a197e8b7cae487dadbfa293e"}, - {file = "yarl-1.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:69ee97c71fee1f63d04c945f56d5d726483c4762845400a6795a3b75d56b6c50"}, - {file = "yarl-1.6.3-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e46fba844f4895b36f4c398c5af062a9808d1f26b2999c58909517384d5deda2"}, - {file = "yarl-1.6.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:31ede6e8c4329fb81c86706ba8f6bf661a924b53ba191b27aa5fcee5714d18ec"}, - {file = "yarl-1.6.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fcbb48a93e8699eae920f8d92f7160c03567b421bc17362a9ffbbd706a816f71"}, - {file = "yarl-1.6.3-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:72a660bdd24497e3e84f5519e57a9ee9220b6f3ac4d45056961bf22838ce20cc"}, - {file = "yarl-1.6.3-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:324ba3d3c6fee56e2e0b0d09bf5c73824b9f08234339d2b788af65e60040c959"}, - {file = "yarl-1.6.3-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:e6b5460dc5ad42ad2b36cca524491dfcaffbfd9c8df50508bddc354e787b8dc2"}, - {file = "yarl-1.6.3-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:6d6283d8e0631b617edf0fd726353cb76630b83a089a40933043894e7f6721e2"}, - {file = "yarl-1.6.3-cp38-cp38-win32.whl", hash = "sha256:9ede61b0854e267fd565e7527e2f2eb3ef8858b301319be0604177690e1a3896"}, - {file = "yarl-1.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:f0b059678fd549c66b89bed03efcabb009075bd131c248ecdf087bdb6faba24a"}, - {file = "yarl-1.6.3-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:329412812ecfc94a57cd37c9d547579510a9e83c516bc069470db5f75684629e"}, - {file = "yarl-1.6.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:c49ff66d479d38ab863c50f7bb27dee97c6627c5fe60697de15529da9c3de724"}, - {file = "yarl-1.6.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f040bcc6725c821a4c0665f3aa96a4d0805a7aaf2caf266d256b8ed71b9f041c"}, - {file = "yarl-1.6.3-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:d5c32c82990e4ac4d8150fd7652b972216b204de4e83a122546dce571c1bdf25"}, - {file = "yarl-1.6.3-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:d597767fcd2c3dc49d6eea360c458b65643d1e4dbed91361cf5e36e53c1f8c96"}, - {file = "yarl-1.6.3-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:8aa3decd5e0e852dc68335abf5478a518b41bf2ab2f330fe44916399efedfae0"}, - {file = "yarl-1.6.3-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:73494d5b71099ae8cb8754f1df131c11d433b387efab7b51849e7e1e851f07a4"}, - {file = "yarl-1.6.3-cp39-cp39-win32.whl", hash = "sha256:5b883e458058f8d6099e4420f0cc2567989032b5f34b271c0827de9f1079a424"}, - {file = "yarl-1.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:4953fb0b4fdb7e08b2f3b3be80a00d28c5c8a2056bb066169de00e6501b986b6"}, - {file = "yarl-1.6.3.tar.gz", hash = "sha256:8a9066529240171b68893d60dca86a763eae2139dd42f42106b03cf4b426bf10"}, -] diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 13758a9..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,22 +0,0 @@ -[tool.poetry] -name = "repl_python3_beta_Pridebot" -version = "0.1.0" -description = "" -authors = ["tyffical <<>>"] - -[tool.poetry.dependencies] -python = "^3.8" -discord = "^1.0.1" -flask = "^2.0.1" -codebug-tether = "^0.9.1" -python-dotenv = "^0.18.0" -discord-py-slash-command = "^2.3.2" -GitPython = "^3.1.20" - -[tool.poetry.dev-dependencies] - -[build-system] -requires = ["poetry>=0.12"] -build-backend = "poetry.masonry.api" - - diff --git a/repl.deploy b/repl.deploy deleted file mode 100644 index a3e01ff..0000000 Binary files a/repl.deploy and /dev/null differ diff --git a/replit-deploy.json b/replit-deploy.json deleted file mode 100644 index c853218..0000000 --- a/replit-deploy.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "endpoint": "https://Pridebot.tyffical.repl.co/refresh" -} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 23251d6..3a64a6d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,2 @@ -discord>=1.7.3 -discord.py>=1.7.3 -discord-py-slash-command>=2.3.2 -flask>=2.0.1 -python-dotenv>=0.18.0 -requests>=2.26.0 -gitpython>=3.1.18 +aiohttp==3.9.0b0 +py-cord \ No newline at end of file diff --git a/roles.json b/roles.json new file mode 100644 index 0000000..917d658 --- /dev/null +++ b/roles.json @@ -0,0 +1,4 @@ +{ + "proud_friendo": 849425044345716756, + "pun_master": 842825815808409632 +} \ No newline at end of file diff --git a/scripts/codebugtest.py b/scripts/codebugtest.py deleted file mode 100644 index 3644bd2..0000000 --- a/scripts/codebugtest.py +++ /dev/null @@ -1,40 +0,0 @@ -from codebug_tether import CodeBug -import time -print("1") -cb = CodeBug('/dev/tty.usbmodem146301') - -print("2") -#this would activate when PRIDEBOT <3 sends a text message to the Twilio API, -#rather than being while True. -while True: - cb.set_row(4,0b11110) - cb.set_row(3,0b10001) - cb.set_row(2,0b11110) - cb.set_row(1,0b10000) - cb.set_row(0,0b10000) - time.sleep(1) - cb.set_row(4,0b11110) - cb.set_row(3,0b10001) - cb.set_row(2,0b11110) - cb.set_row(1,0b10010) - cb.set_row(0,0b10001) - time.sleep(1) - cb.set_row(4,0b11111) - cb.set_row(3,0b00100) - cb.set_row(2,0b00100) - cb.set_row(1,0b00100) - cb.set_row(0,0b11111) - time.sleep(1) - cb.set_row(4,0b11110) - cb.set_row(3,0b10001) - cb.set_row(2,0b10001) - cb.set_row(1,0b10001) - cb.set_row(0,0b11110) - time.sleep(1) - cb.set_row(4,0b11111) - cb.set_row(3,0b10000) - cb.set_row(2,0b11110) - cb.set_row(1,0b10000) - cb.set_row(0,0b11111) - time.sleep(1) -print("3") diff --git a/scripts/keep_alive.py b/scripts/keep_alive.py deleted file mode 100644 index 7cc6ec3..0000000 --- a/scripts/keep_alive.py +++ /dev/null @@ -1,25 +0,0 @@ -# keeping bot alive on repl.it https://www.codementor.io/@garethdwyer/building-a-discord-bot-with-python-and-repl-it-miblcwejz - -from flask import Flask, request -from threading import Thread -import json - -app = Flask('') - -@app.route('/') -def home(): - return "I'm alive" - -@app.route('/refresh', methods = ['POST']) -def refresh(): - print(f"repl.deploy{json.loads(request.get_data())}{request.headers.get('Signature')}") - deploy = input() - print("repl.deploy-success") - return json.loads(deploy) - -def run(): - app.run(host='0.0.0.0',port=8080) - -def keep_alive(): - t = Thread(target=run) - t.start() \ No newline at end of file diff --git a/scripts/sentiment_analysis.py b/scripts/sentiment_analysis.py deleted file mode 100644 index 702ddd6..0000000 --- a/scripts/sentiment_analysis.py +++ /dev/null @@ -1,20 +0,0 @@ - #sentiment analysis disabled until a free api is found - # sentiment = os.environ['sentiment'] - # #sentiment analysis - # r = requests.post( - # "https://api.deepai.org/api/sentiment-analysis", - # data={ - # 'text': message.content, - # }, - # headers={'api-key': sentiment}) - # print(str(message.content)) - # print(r.json()) #prints out id and output: formated as array of ['verypositive/positive/neutral/negative/verynegative'] - # if message.channel.id == sentiment_channel_id: - # sentiment = str(r.json()["output"][0]).lower() - # #switch to match-case (aka switch) statements for python 3.10 - # if sentiment == "verypositive" or sentiment == "positive": - # await message.add_reaction(custom_map["blaheart"]) - # elif sentiment == "neutral": - # await message.add_reaction(custom_map["melonBLAHAJ"]) - # else: - # await message.add_reaction(custom_map["yaay"]) \ No newline at end of file diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..009bd85 --- /dev/null +++ b/utils.py @@ -0,0 +1,55 @@ +import discord +from discord import SlashCommand, option +from discord.ext import commands + +import main + + +class Utils(commands.Cog): + + def __init__(self, bot): + self.bot = bot + + @commands.slash_command( + name="contribute", + description="here's the repo link to contribute to pride bot!") + async def contribute(self, ctx: discord.ApplicationContext): + #todo add a dm message with the tree structure of this repo + await ctx.send_response( + content= + "Want to make Pridebot even better? Feel free to contribute at " + ) + + @commands.slash_command( + name="afk", + description= + "set your afk status so that it will show up when you're tagged") + @option("reason", description="Why are you AFK?", required=False) + async def afk(self, + ctx: discord.ApplicationContext, + reason: str = "No Reason Provided"): + if ctx.author.id in main.afk_dict: + main.afk_dict.pop(ctx.author.id) + await ctx.send_response(content='Welcome back! You are no longer AFK.', + ephemeral=True) + else: + main.afk_dict[ctx.author.id] = reason + await ctx.send_response( + content="You are now AFK. Beware of the real world!", ephemeral=True) + + @commands.slash_command( + name="help", + description="Shows a list of all commands and what they do.") + async def help(self, ctx: discord.ApplicationContext): + embed = discord.Embed( + title="Here are all the slash commands you can use with Pride Bot:") + for command in self.bot.walk_application_commands(): + if type(command) == discord.SlashCommand: + embed.add_field(name="/" + command.name, + value=command.description, + inline=False) + await ctx.send_response(embed=embed, ephemeral=True) + + +def setup(bot): + bot.add_cog(Utils(bot))