This repository has been archived on 2025-02-16. You can view files and clone it, but cannot push or open issues or pull requests.
sidBot/sidBot-py/main.py

127 lines
5 KiB
Python
Raw Normal View History

2021-12-18 17:55:54 +01:00
import os
import discord
2021-12-18 18:36:06 +01:00
import requests
import json
2021-12-18 17:55:54 +01:00
import random
2022-03-23 11:28:06 +01:00
import asyncio
from keep_alive import keep_alive
2021-12-18 17:55:54 +01:00
2022-03-23 11:28:06 +01:00
client=discord.Client()
TOKEN = 'REMOVED FOR SECURITY REASONS'
2021-12-18 17:55:54 +01:00
2021-12-18 18:36:06 +01:00
# arrays containing answers
2021-12-18 17:55:54 +01:00
xmasAnswers = ['Happy Chrismis!', 'Its Chrismin!', 'Merry Chrisis!', 'Merry Chrysler!']
2022-03-23 11:28:06 +01:00
coinflip = ['```Heads```', '```Tails```']
2022-01-19 19:28:58 +01:00
dogTitles = ['Who let the dogs out?:dog:', 'woof:dog:', 'Whos a good boy!:dog:', 'meow:cat:', 'Mr. GoodBoy:dog:', 'Bork Bork!:dog:']
2021-12-18 17:55:54 +01:00
2022-03-23 11:28:06 +01:00
############ APIs ################
2021-12-18 18:36:06 +01:00
# gets a quote from zenquotes.io
def get_quote():
response = requests.get('https://zenquotes.io/api/random')
json_data = json.loads(response.text)
2022-03-23 11:28:06 +01:00
quote = json_data[0]['q'] + ' \n-' + json_data[0]['a']
return('```' + quote + '```')
2021-12-18 18:36:06 +01:00
2021-12-18 22:30:11 +01:00
# gets a meme from Huge RedditMemesAPI
def get_meme():
2021-12-18 23:11:02 +01:00
response = requests.get('https://memes.blademaker.tv/api?lang=en')
res = response.json()
2021-12-18 22:30:11 +01:00
title = res['title']
ups = res['ups']
sub = res['subreddit']
meme = discord.Embed(title = f'{title}\nSubreddit: {sub}')
meme.set_image(url = res['image'])
meme.set_footer(text=f"👍:{ups}")
return meme
2021-12-18 18:36:06 +01:00
2021-12-18 23:11:02 +01:00
# gets a dog from Dog API
def get_dog():
response = requests.get('https://dog.ceo/api/breeds/image/random')
res = response.json()
dog = discord.Embed(title = random.choice(dogTitles))
dog.set_image(url = res['message'])
return dog
2022-03-23 11:28:06 +01:00
################ BOT READY ####################
2021-12-18 17:55:54 +01:00
@client.event # Register an event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
2021-12-19 11:55:41 +01:00
activity = discord.Game(name = "!help") # sets bot activity
await client.change_presence(status = discord.Status.online, activity = activity)
2021-12-18 17:55:54 +01:00
2021-12-18 18:36:06 +01:00
2022-03-23 11:28:06 +01:00
############## MESSAGE RESPONSES ################
2021-12-18 18:08:55 +01:00
# bot senses a message & responds
2021-12-18 17:55:54 +01:00
@client.event
async def on_message(message):
# if message is from bot, return nothing
if message.author == client.user:
return
# user sends "!hello", bot responds w/ "Hello!"
if message.content.lower().startswith('!hello'):
await message.channel.send('Hello!')
2021-12-18 18:19:54 +01:00
# user sends "!ping", bot responds w/ "Pong" + bot latency and a gif
2021-12-18 17:55:54 +01:00
elif message.content.lower().startswith('!ping'):
await message.channel.send(f'Pong :ping_pong: (Bot latency: **{round(client.latency * 1000)}ms**)')
2021-12-18 18:19:54 +01:00
await message.channel.send(file=discord.File('resources/pingpong.gif'))
2021-12-18 17:55:54 +01:00
2021-12-18 18:36:06 +01:00
# user sends "!coinflip", bot returns result
2021-12-18 17:55:54 +01:00
elif message.content.lower().startswith("!coinflip"):
2022-03-23 11:28:06 +01:00
await message.channel.send(file=discord.File('resources/coinspin.gif'))
await asyncio.sleep(1)
await message.channel.send(random.choice(coinflip))
2021-12-18 17:55:54 +01:00
2021-12-18 18:36:06 +01:00
# user sends "!github", bot responds w/ my GitHub profile
2021-12-18 17:55:54 +01:00
elif message.content.lower().startswith("!github"):
await message.channel.send('https://github.com/SindreKjelsrud')
# someone writes "merry christmas", bot responds w/ legendary vine quote
elif "merry christmas" in message.content.lower():
await message.channel.send(random.choice(xmasAnswers) + ':santa:')
2021-12-18 18:36:06 +01:00
# user sends "!inspire", bot inspires user
elif message.content.lower().startswith("!inspire"):
quote = get_quote()
await message.channel.send(quote)
2021-12-18 22:30:11 +01:00
# user sends "!plsmeme", bot sends meme from random subreddit
elif message.content.lower().startswith("!plsmeme"):
meme = get_meme()
await message.channel.send(embed = meme)
2021-12-18 23:11:02 +01:00
# user sends "!plsdog", bot sends picture of dog from Dog API
elif message.content.lower().startswith("!plsdog"):
dog = get_dog()
await message.channel.send(embed = dog)
# user sends "!invbot", bot responds w/ invite link for bot
elif message.content.lower().startswith("!invbot"):
embedVar = discord.Embed(color=0x7B64FF)
embedVar.add_field(name="Bot Invite Link", value="https://discord.com/oauth2/authorize?client_id=921786935662477412&permissions=274881309760&scope=bot", inline=False)
await message.channel.send(embed=embedVar)
# user sends "!help", bot sends commandsfile
elif message.content.lower().startswith("!help"):
2022-03-23 11:28:06 +01:00
embedVar = discord.Embed(title="List of sidBots features/commands:", description="", color=0x7B64FF)
2022-03-23 11:28:06 +01:00
embedVar.add_field(name=":volcano: Commands:",
value='!help \n - List of commands \n\n!hello \n - Bot responds with "Hello!" \n\n!ping \n- Bot responds with "Pong!" and botlatency + a gif from Ping Pong The Animation \n\n!github \n- Flexes github link \n\n!coinflip\n- Heads or Tails! \n\n!inspire\n- Bot inspires user with a quote from zenquotes.io \n\n!plsmeme\n- Bot supplies with premium memes from subreddits across Reddit from Huge RedditMemesAPI \n\n!plsdog\n- Bot supplies with pictures of cute doggos across the whole internet through Dog API \n\n!invbot\n- Bot sends invite link for itself', inline=True)
2022-03-23 11:28:06 +01:00
embedVar.add_field(name=":speech_balloon: Auto Responds:", value='"merry christmas"\n- Someone writes "merry christmas" and bot responds w/ legendary vine quote selected from an array', inline=True)
await message.channel.send(embed=embedVar)
2022-03-23 11:28:06 +01:00
# keeps bot alive
keep_alive()
2021-12-18 17:55:54 +01:00
# run bot
client.run(TOKEN)