dragon-bot/app/help_methods.py

287 lines
10 KiB
Python
Executable File

import discord
def get_help_message(method):
"""
get_help_message(method)
Returns the information and usage of each of dale bot's funtions.
When adding a new feature to dale bot, please add some information about
it here
"""
supported_methods = {
"8ball": [
"Ask dale bot a question and it will give you an 8ball response",
"\nUsage: !8ball Will I win the lottery tomorrow?",
],
"ask": [
"Submits your query to wolfram alpha. If that cannot be answered, tries wikipedia\n",
"\nUsage: !ask 100lbs to KG",
],
"avatar": [
"Returns the avatar for the mentioned user",
"\nUsage: !avatar @somebody",
],
"birb": ["Returns a random bird photo", "\nUsage: !birb"],
"bf5": [
"Returns some API stats about a battlefield 5 character",
"\nUsage: !bf5 <your origin account name>",
],
"dale": ["Posts a photo or video of Dale, the goodest boy.", "\nUsage: !dale"],
"redpanda": ["Returns a random red panda photo", "\nUsage: !redpanda"],
"panda": ["Returns a random panda photo", "\nUsage: !panda"],
"koala": ["Returns a random koala photo", "\nUsage: !koala"],
"clap": [
"Returns the shittiest meme created by sassy girls on twitter this century",
"Usage: !clap some text to be meme'mt",
],
"simp": [
"Returns a license to be a simp",
"Usage: !simp https://some.photo.jpg",
],
"horny": [
"Returns a license to be horny",
"Usage: !horny https://some.photo.jpg",
],
"wasted": [
"Overlays the GTAV wasted text over the image you link",
"Usage: !wasted https://some.photo.jpg",
],
"cleanup": [
"Admin use only. Deletes dale bot's messages from the channel",
"Usage: !cleanup",
],
"corona": [
"Pulls the latest corona virus stats per state from Johns Hopkins data",
"Usage: !corona <some US state>\neg: !corona Colorado",
],
"decide": [
"dale-bot will help make the tough decisions for you",
" If there is only one option, it will give you a yes or no",
"\nUsage: !decide cake or pie\n!decide should I do my homework",
],
"ffxiv": [
"Pulls a characters data from the lodestone API\n",
"Usage: !ffxiv <First name> <last name> <server>\n",
"eg: !ffxiv Slamsong Bardley Adamantoise\n\n",
"Did you know that the critically acclaimed MMORPG Final Fantasy XIV has a free trial,\n",
"and includes the entirety of A Realm Reborn AND the award-winning Heavensward expansion\n",
"up to level 60 with no restrictions on playtime? Sign up, and enjoy Eorzea today!",
],
"define": [
"Returns a definiton of a word from urban dictionary",
"\nUsage: !define loli",
],
"dog": ["Returns the URL to a G O O D B O Y E or G I R L", "\nUsage: !dog"],
"emoji": [
"Uploads the passed in URL to the server as an emoji.",
"\nDiscord does not support GIFS. It will throw an error if you try."
"\nUsage: !emoji http://pictures.com/some_image.png my_new_emoji\n",
"or `!emoji del some_emoji` to delete",
],
"excuse": [
"Generates a random excuse you can give your boss",
"\nUsage: !excuse",
],
"greentext": [
"Grabs a greentext story from redditchat so you can laugh at the misfortune of others",
"\nUsage: !greentext",
],
"help": ["Shows you this message"],
"homepage": [
"This function now outputs the SWEET-ASS picture of the day.",
" Note this picture only changes once a day.",
"\nUsage: !homepage",
],
"invite": [
"Generates a one time use invite to the voice channel you are currently in.\n",
"if you are not in a voice channel, the invite will be for whatever channel !invite was typed in.\n"
"You can also specify if you want it to be a temporary invite by adding `temp` to the end\n",
"Usage: !invite or !invite temp",
],
"issue": [
"Creates an issue on gitlab with the passed in parameters\n",
"Usage: !issue <issue title>; <issue description>",
],
"icon": [
"Returns the server's icon URL\n",
"Usage: !icon",
],
"info": [
"Returns a blurb with information about the discord server\n",
"Usage: !info",
],
"lewd": [
"Returns a URL for a lewd image.",
"Can only be used in NSFW channels.",
"\nUsage: !lewd",
],
"purge": [
"By default, will delete your last 20 messages. You can override this",
" with your own number. \nUsage: !purge or !purge 15",
],
"roles": [
"dale bot will PM you a message with all the roles you have on the server"
],
"wallpaper": [
"Returns the URL for a 4k wallpaper. You can enter",
"a search term as well. Supports multiple search terms as well",
"\nUsage: !wallpaper flowers or !wallpaper mountain flowers sky ",
],
"message": [
"You can ask me a question directly and I will do my best to answer it.",
"\nUsage: @dale-bot what is the capital of France?",
],
"meme": [
"Generates a meme on the fly!",
"\nExamples of all templates can be seen here https://memegen.link/examples"
"\n\nUsage: !meme doge top text; bottom text",
],
"nft": [
"Polls opensea and gets a random monkey from bored ape yacht club",
"\nUsage: !nft",
],
"owo": [
"Returns some fucky wucky text\n",
"Usage: !owo what the fuck did you just fucking say about me you little shit?",
],
"pout": [
"Returns the URL for an anime girl pouting you filthy weeb\n",
"Usage: !pout",
],
"rat": ["Returns a random rat photo", "\nUsage: !rat"],
"roll": [
"Rolls N number of Y sided die\n",
"Usage: !roll 3d20\n",
"You can also add a modifier on the end with a +",
"Usage: !roll 2d20+5",
],
"smug": ["Returns the URL for smug anime girl"],
"source": ["Links you to the git repo with dale-bot's source code"],
"stock": [
"Returns basic stock information for the stock you entered.",
"\nUsage: !stock AAPL TSLA",
],
"trackdays": [
"Returns the track schedule for the tracks we frequent (buttonwillow and thunderhill).\n",
# 'Use abbreviations to reference the tracks, as follows\n',
# 'bw = Buttonwillow Raceway\n',
# 'willow = Willow Springs\n',
# 'streets = Streets of Willow Springs\n',
# 'laguna = WeatherTech Raceway Laguna Seca\n',
# 'thill = Thunderhill Raceway Park\n',
# 'sonoma = Sonoma Raceway\n',
# 'acs = Auto Club Speedway\n',
"Usage: !trackdays",
],
"tts": [
"Uploads a file with the specified text as an MP3.\nThis is advanced shitposting",
"\nUsage: !tts who watches the watchmen?",
"\nTo list all languages, you can type `!tts langs`",
],
"youtube": [
"Searches youtube for the query string and returns the first result",
"\nUsage: !youtube sick bmx tricks",
],
"wink": ["returns a anime girl winking at you", "\nUsage: !wink"],
"verify": [
"Adds the twitter blue check mark to the previous message\n",
"\nLiterally thats all it does\n" "\nUsage: !verify",
],
}
return "```css\n{}: {}\n```".format(method, " ".join(supported_methods[method]))
def get_help_embed(bot):
categories = {
"fun": [
"nft",
"bf5",
"ffxiv",
"clap",
"youtube",
"excuse",
"greentext",
"lewd",
"message",
"meme",
"homepage",
"pout",
"roll",
"smug",
"owo",
"wink",
"verify",
"horny",
"wasted",
"simp",
"trackdays",
],
"util": [
"ask",
"corona",
"emoji",
"8ball",
"decide",
"info",
"icon",
"wallpaper",
"stock",
"tts",
"issue",
],
"users": ["help", "invite", "purge", "roles", "source"],
"pictures of animals": [
"birb",
"redpanda",
"dale",
"dog",
"rat",
"koala",
"panda",
"raccoon",
"fox",
"cat",
"kangaroo",
],
"admin": ["cleanup"],
}
description = "\nBelow you can see all the commands I know.\n\n**Have a nice day!**"
embed = discord.Embed(description=description, color=0x428BCA, type="rich")
embed.set_author(
name="Hello! I'm {}".format(bot.user.name), icon_url=bot.user.default_avatar_url
)
for category in categories:
command_list = []
for command in categories[category]:
command_list.append("`{}`".format(command))
embed.add_field(
name="**%s**" % str(category).upper(),
value=", ".join(command_list),
inline=False,
)
description2 = (
"**Use `!help <Command>` for more information about a command.** \n\n"
+ "**Examples:** \n `!help dog` for detailed help for the dog command \n\n"
+ "**Useful links:** [My source code](https://git.luker.gq/ldooks/dragon-bot), [Donate](https://cash.me/$ldooks) \n\n"
+ "**Invite me to another server:** [Click here](https://discord.com/oauth2/authorize?client_id=%s&scope=bot&permissions=8)"
% bot.user.id
)
embed.add_field(name="\u200b", value=description2, inline=False)
return embed
def parse_message(message):
method = message.split()[1]
try:
explanation = get_help_message(method)
except KeyError:
return "This command could not be found."
return explanation