Compare commits

...

38 Commits

Author SHA1 Message Date
bobloy
9d6ff768f1 Info and black formatting 2018-10-24 14:06:14 -04:00
bobloy
2dfb757fbd BanGame initial commit 2018-10-24 14:04:45 -04:00
bobloy
b9da8246e1 Embeds and optional nicknames 2018-10-22 15:36:47 -04:00
bobloy
9b266c18be Leaverset channel description 2018-10-22 15:29:10 -04:00
bobloy
3389fe2b0f Auto_help handles it 2018-10-22 14:59:07 -04:00
bobloy
7470af525c missing help 2018-10-22 14:58:11 -04:00
bobloy
6d8e1a668e markdown 2018-10-22 14:55:52 -04:00
bobloy
0ff00e1deb no requirements necessary 2018-10-22 14:55:26 -04:00
bobloy
a665c5f827 await ctx.embed_requested 2018-10-22 14:53:09 -04:00
bobloy
f538b6da53 Info updates 2018-10-22 14:52:15 -04:00
bobloy
c470bec50a Missing await 2018-10-22 14:03:17 -04:00
bobloy
59c9ea775b Unneeded requirements 2018-10-22 14:03:08 -04:00
bobloy
495a5d0643 Unneeded requirements 2018-10-22 12:53:40 -04:00
bobloy
8cbaab2815 Fix description wrap 2018-10-22 12:49:20 -04:00
bobloy
8786156963 proper description 2018-10-22 12:43:29 -04:00
bobloy
e1569ab7cf Unneeded requirements 2018-10-22 12:42:00 -04:00
bobloy
afbfb0d49e Unneeded requirements 2018-10-22 12:41:49 -04:00
bobloy
3c2c58dcd7 less comments 2018-10-22 12:41:01 -04:00
bobloy
b6884634fe fix custom emojis 2018-10-22 12:40:44 -04:00
bobloy
12afa30df8 More accurate instructions 2018-10-22 12:29:14 -04:00
bobloy
dfedfb466b remove pass_context legacy code 2018-10-22 12:26:30 -04:00
bobloy
9ab8fdce9c unneeded requirements 2018-10-22 12:25:20 -04:00
bobloy
ffb3e52072 unneeded requirements 2018-10-22 12:25:09 -04:00
bobloy
417eea4859 Fix to bugs 2018-10-22 12:24:19 -04:00
bobloy
1f756cf429 Remove some comments and rename variable 2018-10-22 12:08:20 -04:00
bobloy
db01c69da3 Add list command, fix no_pm to guild_only 2018-10-22 09:57:47 -04:00
bobloy
3a70f7db5f unneeded requirements 2018-10-22 09:49:21 -04:00
bobloy
eb32d4afd1 Default for "Hi {}, I'm Dad" set to enabled 2018-10-22 09:48:48 -04:00
bobloy
02b9517688 Proper coglint requirements 2018-10-22 09:48:18 -04:00
bobloy
58066b328f Unneeded requirements 2018-10-22 09:46:23 -04:00
bobloy
dfccae00b5 Add CPU / RAM / Disk warning 2018-10-22 09:45:21 -04:00
bobloy
f3e3463aed extra slash 2018-10-22 09:37:53 -04:00
bobloy
29fca5ee9b unneeded requirements 2018-10-22 09:27:30 -04:00
bobloy
a310394954 Correct description, audioset notify alert, unneeded lavaplayer line 2018-10-22 09:27:09 -04:00
bobloy
f6bd695995 audio tag 2018-10-22 09:09:02 -04:00
bobloy
e632827e4e Empty requirements 2018-10-22 09:06:57 -04:00
bobloy
ba506695cc Typo and While True 2018-10-22 09:05:41 -04:00
bobloy
0080d22160 Unneeded requirements 2018-10-22 08:59:51 -04:00
32 changed files with 251 additions and 65 deletions

View File

@ -140,7 +140,7 @@ class AnnounceDaily(Cog):
@_ad.command()
async def listimg(self, ctx: commands.Context):
"""
List all registered announcement immages
List all registered announcement images
"""
images = await self.config.images()
for page in pagify("\n".join(images)):
@ -192,7 +192,7 @@ class AnnounceDaily(Cog):
await self.config.time.set({"hour": h, "minute": m, "second": s})
await ctx.send(
"Announcements time has been set to {}::{}::{} every day\n"
"Announcement time has been set to {}::{}::{} every day\n"
"**Changes will apply after next scheduled announcement or reload**".format(h, m, s)
)
@ -229,7 +229,7 @@ class AnnounceDaily(Cog):
await channel.send(choice)
async def check_day(self):
while self is self.bot.get_cog("AnnounceDaily"):
while True:
tomorrow = datetime.now() + timedelta(days=1)
time = await self.config.time()
h, m, s = time["hour"], time["minute"], time["second"]

View File

@ -10,7 +10,6 @@
"description": "Send daily announcements to all servers at a specified times",
"hidden": true,
"install_msg": "Thank you for installing AnnounceDaily! Get started with `[p]load announcedaily` and `[p]help AnnounceDaily`",
"requirements": [],
"short": "Send daily announcements",
"tags": [
"bobloy"

View File

@ -17,8 +17,8 @@ from .audiosession import AudioSession
class AudioTrivia(Trivia):
"""
Custom commands
Creates commands used to display text and adjust roles
Upgrade to the Trivia cog that enables audio trivia
Replaces the Trivia cog
"""
def __init__(self, bot: Red):
@ -90,10 +90,16 @@ class AudioTrivia(Trivia):
return
status = await self.audio.config.status()
notify = await self.audio.config.notify()
if status:
await ctx.send(
"I recommend disabling audio status with `{}audioset status`".format(ctx.prefix)
"It is recommended to disable audio status with `{}audioset status`".format(ctx.prefix)
)
if notify:
await ctx.send(
"It is recommended to disable audio notify with `{}audioset notify`".format(ctx.prefix)
)
if not self.audio._player_check(ctx):
@ -110,7 +116,6 @@ class AudioTrivia(Trivia):
lavaplayer = lavalink.get_player(ctx.guild.id)
lavaplayer.store("channel", ctx.channel.id) # What's this for? I dunno
lavaplayer.store("guild", ctx.guild.id)
await self.audio._data_check(ctx)

View File

@ -10,11 +10,11 @@
"description": "Start an Audio Trivia game",
"hidden": false,
"install_msg": "Thank you for installing Audio trivia!\n You **MUST** unload trivia to use this (`[p]unload trivia`)\n Then you can get started with `[p]load audiotrivia` and `[p]help AudioTrivia`",
"requirements": [],
"short": "Start an Audio Trivia game",
"tags": [
"fox",
"bobloy",
"games"
"games",
"audio"
]
}

5
bangame/__init__.py Normal file
View File

@ -0,0 +1,5 @@
from .bangame import BanGame
def setup(bot):
bot.add_cog(BanGame(bot))

117
bangame/bangame.py Normal file
View File

@ -0,0 +1,117 @@
import asyncio
import discord
from redbot.core import Config, checks, commands
from typing import Any
Cog: Any = getattr(commands, "Cog", object)
class BanGame(Cog):
"""
Ban anyone playing the chosen games
"""
def __init__(self, bot):
self.bot = bot
self.config = Config.get_conf(self, identifier=66971107197109101)
default_guild = {"banned_games": [], "do_ban": False}
self.config.register_guild(**default_guild)
@commands.guild_only()
@commands.group(aliases=["exclusiverole"])
async def bangame(self, ctx):
"""Base command for managing exclusive roles"""
if not ctx.invoked_subcommand:
pass
@bangame.command(name="toggleban")
@checks.mod_or_permissions(administrator=True)
async def bangame_toggleban(self, ctx):
"""Toggles kicking and banning"""
do_ban = not self.config.guild(ctx.guild).do_ban()
await self.config.guild(ctx.guild).do_ban.set(do_ban)
await ctx.send(
"Members will now be {} for playing a banned game".format(
"Banned" if do_ban else "Kicked"
)
)
@bangame.command(name="add")
@checks.mod_or_permissions(administrator=True)
async def bangame_add(self, ctx, game):
"""Adds a banned game"""
if game in (await self.config.guild(ctx.guild).banned_games()):
await ctx.send("That game is already banned")
return
async with self.config.guild(ctx.guild).banned_games() as bg:
bg.append(game)
await self.check_guild(ctx.guild)
await ctx.send("Banned game added: {}".format(game))
@bangame.command(name="delete")
@checks.mod_or_permissions(administrator=True)
async def bangame_delete(self, ctx, game):
"""Deletes a banned game"""
if game not in (await self.config.guild(ctx.guild).banned_games()):
await ctx.send("That game is not banned")
return
async with self.config.guild(ctx.guild).banned_games() as bg:
bg.remove(game)
await ctx.send("{} is no longer banned".format(game))
@bangame.command(name="list")
@checks.mod_or_permissions(administrator=True)
async def bangame_list(self, ctx):
"""List current banned games"""
banned_games = await self.config.guild(ctx.guild).banned_games()
out = "**Banned Games**\n\n"
for game in banned_games:
out += "{}\n".format(game)
await ctx.send(out)
async def check_guild(self, guild: discord.Guild):
game_set = set(await self.config.guild(guild).banned_games())
for member in guild.members:
try:
await self.ban_or_kick_banned_games(member, game_set=game_set)
except discord.Forbidden:
pass
async def ban_or_kick_banned_games(self, member: discord.Member, game_set=None):
if game_set is None:
game_set = set(await self.config.guild(member.guild).banned_games())
if member.activity is not None and member.activity.name in game_set:
do_ban = await self.config.guild(member.guild).do_ban()
if do_ban:
await member.ban(reason="Plays {}".format(member.activity.name))
else:
await member.kick(reason="Plays {}".format(member.activity.name))
async def on_member_update(self, before: discord.Member, after: discord.Member):
if before.activity == after.activity:
return
await asyncio.sleep(1)
game_set = set(await self.config.guild(after.guild).banned_games())
if after.activity is not None and after.activity.name in game_set:
try:
await self.ban_or_kick_banned_games(after, game_set=game_set)
except discord.Forbidden:
pass

20
bangame/info.json Normal file
View File

@ -0,0 +1,20 @@
{
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"description": "Kick or ban members that play a banned game",
"hidden": false,
"install_msg": "Thank you for installing BanGame. Get started with `[p]load bangame` and `[p]help BanGame`",
"short": "Ban games",
"tags": [
"fox",
"bobloy",
"utility",
"tools"
]
}

View File

@ -116,7 +116,7 @@ class CCRole(Cog):
# Selfrole
await ctx.send(
"Is this a targeted command?(yes//no)\nNo will make this a selfrole command"
"Is this a targeted command?(yes/no)\nNo will make this a selfrole command"
)
try:

View File

@ -10,7 +10,6 @@
"description": "[Incomplete] Creates custom commands to adjust roles and send custom messages",
"hidden": false,
"install_msg": "Thank you for installing Custom Commands w/ Roles. Get started with `[p]load ccrole` and `[p]help CCRole`",
"requirements": [],
"short": "[Incomplete] Creates commands that adjust roles",
"tags": [
"fox",

View File

@ -152,6 +152,10 @@ class Chatter(Cog):
Trains the bot based on language in this guild
"""
await ctx.send("Warning: The cog may use significant RAM or CPU if trained on large data sets.\n"
"Additionally, large sets will use more disk space to save the trained data.\n\n"
"If you experience issues, clear your trained data and train again on a smaller scope.")
conversation = await self._get_conversation(ctx, channel)
if not conversation:

View File

@ -10,7 +10,7 @@
"description": "Lint python code posted in chat",
"hidden": true,
"install_msg": "Thank you for installing CogLint! Get started with `[p]load coglint` and `[p]help CogLint`",
"requirements": [],
"requirements": ["pylint"],
"short": "Python cog linter",
"tags": [
"bobloy",

View File

@ -28,7 +28,7 @@ class Dad(Cog):
self.bot = bot
self.config = Config.get_conf(self, identifier=6897100, force_registration=True)
default_guild = {"enabled": False, "nickname": False, "cooldown": 240}
default_guild = {"enabled": True, "nickname": False, "cooldown": 240}
self.config.register_guild(**default_guild)

View File

@ -10,7 +10,6 @@
"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",

View File

@ -19,7 +19,8 @@ class ExclusiveRole(Cog):
self.config.register_guild(**default_guild)
@commands.group(no_pm=True, aliases=["exclusiverole"])
@commands.guild_only()
@commands.group(aliases=["exclusiverole"])
async def exclusive(self, ctx):
"""Base command for managing exclusive roles"""
@ -54,6 +55,21 @@ class ExclusiveRole(Cog):
await ctx.send("Exclusive role removed")
@exclusive.command(name="list")
@checks.mod_or_permissions(administrator=True)
async def exclusive_list(self, ctx):
"""List current exclusive roles"""
role_list = await self.config.guild(ctx.guild).role_list()
guild: discord.Guild = ctx.guild
role_list = [guild.get_role(role_id) for role_id in role_list]
out = "**Exclusive roles**\n\n"
for role in role_list:
out += "{}\n".format(role)
await ctx.send(out)
async def check_guild(self, guild: discord.Guild):
role_set = set(await self.config.guild(guild).role_list())
for member in guild.members:

View File

@ -10,7 +10,6 @@
"description": "Assign roles to be exclusive, preventing other roles from being added",
"hidden": false,
"install_msg": "Thank you for installing ExclusiveRole. Get started with `[p]load exclusiverole` and `[p]help ExclusiveRole`",
"requirements": [],
"short": "Set roles to be exclusive",
"tags": [
"fox",

View File

@ -72,25 +72,22 @@ class Flag(Cog):
"""Flag a member"""
guild = ctx.guild
await self._check_flags(guild)
# clashroyale = self.bot.get_cog('clashroyale')
# if clashroyale is None:
# await ctx.send("Requires clashroyale cog installed")
# return
flag = self._flag_template()
expiredate = date.today()
expiredate += timedelta(days=await self.config.guild(guild).days())
expire_date = date.today() + timedelta(days=await self.config.guild(guild).days())
flag["reason"] = reason
flag["expireyear"] = expiredate.year
flag["expiremonth"] = expiredate.month
flag["expireday"] = expiredate.day
flag["expireyear"] = expire_date.year
flag["expiremonth"] = expire_date.month
flag["expireday"] = expire_date.day
# flags = await self.config.guild(guild).flags.get_raw(str(member.id), default=[])
# flags.append(flag)
# await self.config.guild(guild).flags.set_raw(str(member.id), value=flags)
async with self.config.guild(guild).flags() as flags:
if str(member.id) not in flags:
flags[str(member.id)] = []
flags[str(member.id)].append(flag)
outembed = await self._list_flags(member)
@ -98,7 +95,10 @@ class Flag(Cog):
if outembed:
await ctx.send(embed=outembed)
if await self.config.guild(guild).dm():
await member.send(embed=outembed)
try:
await member.send(embed=outembed)
except discord.Forbidden:
await ctx.send("DM-ing user failed")
else:
await ctx.send("This member has no flags.. somehow..")

View File

@ -10,7 +10,6 @@
"description": "Add expiring flags on members to track warnings or incidents",
"hidden": false,
"install_msg": "Thank you for installing Flag! Get started with `[p]load flag` and `[p]help Flag`",
"requirements": [],
"short": "Add expiring flags to members",
"tags": [
"bobloy",

View File

@ -10,7 +10,6 @@
"description": "Mentions roles that are unmentionable",
"hidden": false,
"install_msg": "Thank you for installing ForceMention! Get started with `[p]load forcemention`, then `[p]forcemention`",
"requirements": [],
"short": "Mention unmentionables",
"tags": [
"bobloy",

View File

@ -137,21 +137,25 @@ class Hangman(Cog):
HANGMAN""",
)
@commands.group(aliases=["sethang"], pass_context=True)
@commands.group(aliases=["sethang"])
@checks.mod_or_permissions(administrator=True)
async def hangset(self, ctx):
"""Adjust hangman settings"""
if ctx.invoked_subcommand is None:
pass
@hangset.command(pass_context=True)
@hangset.command()
async def face(self, ctx: commands.Context, theface):
"""Set the face of the hangman"""
message = ctx.message
# Borrowing FlapJack's emoji validation
# (https://github.com/flapjax/FlapJack-Cogs/blob/master/smartreact/smartreact.py)
if theface[:2] == "<:":
theface = [r for r in self.bot.emojis if r.id == theface.split(":")[2][:-1]][0]
theface = self.bot.get_emoji(int(theface.split(":")[2][:-1]))
if theface is None:
await ctx.send("I could not find that emoji")
return
try:
# Use the face as reaction to see if it's valid (THANKS FLAPJACK <3)
@ -160,11 +164,11 @@ class Hangman(Cog):
await ctx.send("That's not an emoji I recognize.")
return
await self.config.guild(ctx.guild).theface.set(theface)
await self.config.guild(ctx.guild).theface.set(str(theface))
await self._update_hanglist()
await ctx.send("Face has been updated!")
@hangset.command(pass_context=True)
@hangset.command()
async def toggleemoji(self, ctx: commands.Context):
"""Toggles whether to automatically react with the alphabet"""
@ -172,7 +176,7 @@ class Hangman(Cog):
await self.config.guild(ctx.guild).emojis.set(not current)
await ctx.send("Emoji Letter reactions have been set to {}".format(not current))
@commands.command(aliases=["hang"], pass_context=True)
@commands.command(aliases=["hang"])
async def hangman(self, ctx, guess: str = None):
"""Play a game of hangman against the bot!"""
if guess is None:
@ -339,11 +343,14 @@ class Hangman(Cog):
await message.add_reaction(self.navigate[0])
def _make_say(self, guild):
async def _make_say(self, guild):
c_say = "Guess this: " + str(self._hideanswer(guild)) + "\n"
c_say += "Used Letters: " + str(self._guesslist(guild)) + "\n"
c_say += self.hanglist[guild][self.the_data[guild]["hangman"]] + "\n"
c_say += self.navigate[0] + " for A-M, " + self.navigate[-1] + " for N-Z"
if await self.config.guild(guild).emojis():
c_say += "{} for A-M, {} for N-Z".format(self.navigate[0], self.navigate[-1])
else:
c_say += "React with {} - {} to guess".format(self.letters[0], self.letters[-1])
return c_say
@ -351,7 +358,7 @@ class Hangman(Cog):
if message.guild not in self.hanglist:
await self._update_hanglist()
c_say = self._make_say(message.guild)
c_say = await self._make_say(message.guild)
await message.edit(content=c_say)
self.the_data[message.guild]["trackmessage"] = message.id
@ -363,7 +370,7 @@ class Hangman(Cog):
if channel.guild not in self.hanglist:
await self._update_hanglist()
c_say = self._make_say(channel.guild)
c_say = await self._make_say(channel.guild)
message = await channel.send(c_say)

View File

@ -10,7 +10,6 @@
"description": "Create a channel with updating server info",
"hidden": false,
"install_msg": "Thank you for installing InfoChannel. Get started with `[p]load infochannel`, then `[p]help InfoChannel`",
"requirements": [],
"short": "Updating server info channel",
"tags": [
"bobloy",

View File

@ -10,7 +10,6 @@
"description": "Keeps track of when people leave the server, and posts a message notifying",
"hidden": false,
"install_msg": "Thank you for installing Leaver. Get started with `[p]load leaver`, then `[p]help Leaver`",
"requirements": [],
"short": "Send message on leave",
"tags": [
"bobloy",

View File

@ -1,6 +1,7 @@
import discord
from redbot.core import Config, checks, commands
from redbot.core.bot import Red
from redbot.core.commands import Context
from typing import Any
@ -12,7 +13,7 @@ class Leaver(Cog):
Creates a goodbye message when people leave
"""
def __init__(self, bot):
def __init__(self, bot: Red):
self.bot = bot
self.config = Config.get_conf(self, identifier=9811198108111121, force_registration=True)
default_guild = {"channel": ""}
@ -28,6 +29,7 @@ class Leaver(Cog):
@leaverset.command()
async def channel(self, ctx: Context):
"""Choose the channel to send leave messages to"""
guild = ctx.guild
await self.config.guild(guild).channel.set(ctx.channel.id)
await ctx.send("Channel set to " + ctx.channel.name)
@ -38,6 +40,10 @@ class Leaver(Cog):
if channel != "":
channel = guild.get_channel(channel)
await channel.send(str(member) + "(*" + str(member.nick) + "*) has left the server!")
out = "{}{} has left the server".format(member, member.nick if member.nick is not None else "")
if await self.bot.embed_requested(channel, member):
await channel.send(embed=discord.Embed(description=out, color=self.bot.color))
else:
await channel.send(out)
else:
pass

View File

@ -14,7 +14,7 @@ Cog: Any = getattr(commands, "Cog", object)
class QRInvite(Cog):
"""
V3 Cog Template
Create custom QR codes for server invites
"""
def __init__(self, bot: Red):

View File

@ -1,10 +1,22 @@
{
"author" : ["Bobloy"],
"bot_version" : [3,0,0],
"description" : "Cog to prevent reactions on specific messages from certain users",
"hidden" : true,
"install_msg" : "Thank you for installing ReactRestrict.",
"requirements" : [],
"short" : "[Incomplete] Prevent reactions",
"tags" : ["react", "reaction", "restrict", "tools", "utils", "bobloy"]
"author": [
"Bobloy"
],
"bot_version": [
3,
0,
0
],
"description": "Cog to prevent reactions on specific messages from certain users",
"hidden": true,
"install_msg": "Thank you for installing ReactRestrict.",
"short": "[Incomplete] Prevent reactions",
"tags": [
"react",
"reaction",
"restrict",
"tools",
"utils",
"bobloy"
]
}

View File

@ -206,8 +206,7 @@ class ReactRestrict(Cog):
@reactrestrict.command()
async def add(self, ctx: commands.Context, message_id: int, *, role: discord.Role):
"""
Adds a reaction|role combination to a registered message, don't use
quotes for the role name.
Adds a reaction|role combination to a registered message, don't use quotes for the role name.
"""
message = await self._get_message(ctx, message_id)
if message is None:

View File

@ -11,7 +11,6 @@
"description": "Apply for a job at the recycling plant! Sort out the garbage!",
"hidden": false,
"install_msg": "Thank you for installing RecyclingPlant. Start recycling today with `[p]load recyclingplant`, then `[p]recyclingplant`",
"requirements": [],
"short": "Apply for a job at the recycling plant!",
"tags": [
"bobloy",

View File

@ -81,7 +81,7 @@ class RecyclingPlant(Cog):
)
else:
if reward > 0:
bank.deposit_credits(ctx.author, reward)
await bank.deposit_credits(ctx.author, reward)
await ctx.send(
"{} been given **{} {}s** for your services.".format(
ctx.author.display_name, reward, bank.get_currency_name(ctx.guild)

View File

@ -10,7 +10,7 @@
],
"description": "Play Rock Papers Scissor Lizard Spock by Sam Kass in Discord!",
"hidden": false,
"install_msg": "Thank you for installing RPSLP. Get started with `[p]load rpsls`, then `[p]rpsls`",
"install_msg": "Thank you for installing RPSLS. Get started with `[p]load rpsls`, then `[p]rpsls`",
"requirements": [],
"short": "Play Rock Papers Scissor Lizard Spock in Discord!",
"tags": [

View File

@ -9,7 +9,7 @@
],
"description": "Convert any website into text and post it in chat",
"hidden": true,
"install_msg": "Thank you for installing SayUrl! Get started with `[p]load forcemention`, then `[p]help SayUrl",
"install_msg": "Thank you for installing SayUrl! Get started with `[p]load sayurl`, then `[p]help SayUrl",
"requirements": ["html2text"],
"short": "Convert URL to text",
"tags": [

View File

@ -28,7 +28,7 @@ class SCP(Cog):
msg = "You must specify a number between 1 and 4999."
c = discord.Color.red()
if ctx.embed_requested():
if await ctx.embed_requested():
await ctx.send(embed=discord.Embed(description=msg, color=c))
else:
await ctx.maybe_send_embed(msg)
@ -94,7 +94,7 @@ class SCP(Cog):
em = discord.Embed(title=ttl, description=msg, color=c)
if ctx.embed_requested():
if await ctx.embed_requested():
await ctx.send(embed=em)
else:
await ctx.maybe_send_embed(msg)
@ -118,7 +118,7 @@ class SCP(Cog):
em = discord.Embed(title=ttl, description=msg, color=c)
if ctx.embed_requested():
if await ctx.embed_requested():
await ctx.send(embed=em)
else:
await ctx.maybe_send_embed(msg)

View File

@ -9,8 +9,7 @@
],
"description": "Apply roles based on the # of days on server",
"hidden": false,
"install_msg": "Thank you for installing timerole.\nGet started with `[p]load timerole`. Configure with [p]timerole",
"requirements": [],
"install_msg": "Thank you for installing timerole.\nGet started with `[p]load timerole`. Configure with `[p]timerole`",
"short": "Apply roles after # of days",
"tags": [
"bobloy",

View File

@ -41,6 +41,11 @@ class Werewolf(Cog):
@commands.command()
async def buildgame(self, ctx: commands.Context):
"""
Create game codes to run custom games.
Pick the roles or randomized roles you want to include in a game
"""
gb = GameBuilder()
code = await gb.build_game(ctx)
@ -92,7 +97,7 @@ class Werewolf(Cog):
@commands.guild_only()
@wwset.command(name="category")
async def wwset_category(self, ctx: commands.Context, category_id=None):
async def wwset_category(self, ctx: commands.Context, category_id: int=None):
"""
Assign the channel category
"""
@ -294,7 +299,7 @@ class Werewolf(Cog):
Find custom roles by name, alignment, category, or ID
"""
if ctx.invoked_subcommand is None or ctx.invoked_subcommand == self.ww_search:
await ctx.send_help()
pass
@ww_search.command(name="name")
async def ww_search_name(self, ctx: commands.Context, *, name):