parent
c8417e03a8
commit
fcda813d47
@ -0,0 +1,5 @@
|
|||||||
|
from .dad import Dad
|
||||||
|
|
||||||
|
|
||||||
|
def setup(bot):
|
||||||
|
bot.add_cog(Dad(bot))
|
@ -0,0 +1,112 @@
|
|||||||
|
from collections import defaultdict
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
import aiohttp
|
||||||
|
import discord
|
||||||
|
from redbot.core import Config, checks
|
||||||
|
from redbot.core import commands
|
||||||
|
from redbot.core.bot import Red
|
||||||
|
|
||||||
|
Cog: Any = getattr(commands, "Cog", object)
|
||||||
|
|
||||||
|
|
||||||
|
async def fetch_url(session, url):
|
||||||
|
async with session.get(url) as response:
|
||||||
|
assert response.status == 200
|
||||||
|
return await response.json()
|
||||||
|
|
||||||
|
|
||||||
|
class Dad(Cog):
|
||||||
|
"""
|
||||||
|
Dad jokes
|
||||||
|
|
||||||
|
Nicknaming user idea comes from https://github.com/Vexs/DadBot
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, bot: Red):
|
||||||
|
self.bot = bot
|
||||||
|
self.config = Config.get_conf(self, identifier=6897100, force_registration=True)
|
||||||
|
|
||||||
|
default_guild = {
|
||||||
|
"enabled": False,
|
||||||
|
"nickname": False,
|
||||||
|
"cooldown": 240
|
||||||
|
}
|
||||||
|
|
||||||
|
self.config.register_guild(**default_guild)
|
||||||
|
|
||||||
|
self.cooldown = defaultdict(datetime.now)
|
||||||
|
|
||||||
|
@commands.command()
|
||||||
|
async def dadjoke(self, ctx: commands.Context):
|
||||||
|
headers = {"User-Agent": "FoxV3 (https://github.com/bobloy/Fox-V3)",
|
||||||
|
"Accept": "application/json"}
|
||||||
|
|
||||||
|
async with aiohttp.ClientSession(headers=headers) as session:
|
||||||
|
joke = await fetch_url(session, 'https://icanhazdadjoke.com/')
|
||||||
|
|
||||||
|
em = discord.Embed()
|
||||||
|
em.set_image(url="https://icanhazdadjoke.com/j/{}.png".format(joke['id']))
|
||||||
|
|
||||||
|
await ctx.send(embed=em)
|
||||||
|
|
||||||
|
@commands.group()
|
||||||
|
@checks.admin()
|
||||||
|
async def dad(self, ctx: commands.Context):
|
||||||
|
"""Dad joke superhub"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@dad.command(name='toggle')
|
||||||
|
async def dad_toggle(self, ctx: commands.Context):
|
||||||
|
"""Toggle automatic dad jokes on or off"""
|
||||||
|
is_on = await self.config.guild(ctx.guild).enabled()
|
||||||
|
await self.config.guild(ctx.guild).enabled.set(not is_on)
|
||||||
|
await ctx.send("Auto dad jokes are now set to {}".format(not is_on))
|
||||||
|
|
||||||
|
@dad.command(name='nickname')
|
||||||
|
async def dad_nickname(self, ctx: commands.Context):
|
||||||
|
"""Toggle nicknaming"""
|
||||||
|
is_on = await self.config.guild(ctx.guild).nickname()
|
||||||
|
await self.config.guild(ctx.guild).nickname.set(not is_on)
|
||||||
|
await ctx.send("Nicknaming is now set to {}".format(not is_on))
|
||||||
|
|
||||||
|
@dad.command(name='cooldown')
|
||||||
|
async def dad_cooldown(self, ctx: commands.Context, cooldown: int):
|
||||||
|
"""Set the auto-joke cooldown"""
|
||||||
|
|
||||||
|
await self.config.guild(ctx.guild).cooldown.set(cooldown)
|
||||||
|
await ctx.send("Dad joke cooldown is now set to {}".format(cooldown))
|
||||||
|
|
||||||
|
async def on_message(self, message: discord.Message):
|
||||||
|
guild: discord.Guild = message.guild
|
||||||
|
if guild is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
guild_config = self.config.guild(guild)
|
||||||
|
is_on = await guild_config.enabled()
|
||||||
|
if not is_on:
|
||||||
|
return
|
||||||
|
|
||||||
|
if self.cooldown[guild.id] > datetime.now():
|
||||||
|
return
|
||||||
|
|
||||||
|
lower = message.clean_content.lower()
|
||||||
|
lower_split = lower.split()
|
||||||
|
if len(lower_split)==0:
|
||||||
|
return
|
||||||
|
|
||||||
|
if lower_split[0] == "i'm" and len(lower_split) >= 2:
|
||||||
|
if await guild_config.nickname():
|
||||||
|
try:
|
||||||
|
await message.author.edit(nick=lower[4:])
|
||||||
|
except discord.Forbidden:
|
||||||
|
out = lower[4:]
|
||||||
|
else:
|
||||||
|
out = message.author.mention
|
||||||
|
else:
|
||||||
|
out = lower[4:]
|
||||||
|
|
||||||
|
await message.channel.send("Hi {}, I'm {}!".format(out, guild.me.display_name))
|
||||||
|
|
||||||
|
self.cooldown[guild.id] = datetime.now() + timedelta(seconds=(await guild_config.cooldown()))
|
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"author": [
|
||||||
|
"Bobloy"
|
||||||
|
],
|
||||||
|
"bot_version": [
|
||||||
|
3,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"description": "Tell dad jokes and give out bad nicknames",
|
||||||
|
"hidden": true,
|
||||||
|
"install_msg": "Thank you for installing Dad. Get started with `[p]load dad`, then `[p]help Dad`",
|
||||||
|
"requirements": [],
|
||||||
|
"short": "Dad joke bot",
|
||||||
|
"tags": [
|
||||||
|
"bobloy",
|
||||||
|
"utils",
|
||||||
|
"tools"
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in new issue