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
client = discord . Client ( )
my_secret = os . environ [ ' TOKEN ' ]
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! ' ]
coinflip = [ ' Heads ' , ' Not Sonic lol (Tails..) ' ]
2021-12-18 23:11:02 +01:00
dogTitles = [ ' Who let the dogs out? ' , ' woof ' , ' Whos a good boy! ' , ' meow ' , ' Mr. GoodBoy ' ]
2021-12-18 17:55:54 +01:00
2021-12-18 18:36:06 +01:00
2021-12-18 23:11:02 +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 )
quote = json_data [ 0 ] [ ' q ' ] + ' - ' + json_data [ 0 ] [ ' a ' ]
return ( quote )
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 ' ]
downs = res [ ' downs ' ]
sub = res [ ' subreddit ' ]
meme = discord . Embed ( title = f ' { title } \n Subreddit: { sub } ' )
meme . set_image ( url = res [ ' image ' ] )
meme . set_footer ( text = f " 👍: { ups } " )
2021-12-18 22:38:22 +01:00
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
2021-12-19 11:55:41 +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
2021-12-18 23:11:02 +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 "!help", bot sends commandsfile
2021-12-18 17:55:54 +01:00
elif message . content . lower ( ) . startswith ( " !help " ) :
await message . channel . send ( file = discord . File ( " commands.md " ) )
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 " ) :
await message . channel . send ( random . choice ( coinflip ) )
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 )
2021-12-18 17:55:54 +01:00
# run bot
2021-12-18 23:11:02 +01:00
client . run ( my_secret )