Skip to content

Commit

Permalink
add /fortune command
Browse files Browse the repository at this point in the history
  • Loading branch information
wizzdom committed Oct 29, 2024
1 parent 1c0388d commit 4192be3
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ hikari-arc==1.1.0
ruff==0.2.0
pre-commit==3.6.0
python-dotenv==1.0.1
fortune-python==1.1.1
58 changes: 58 additions & 0 deletions src/extensions/fortune.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import arc
import hikari
from fortune import fortune

fortune_cmd = arc.GatewayPlugin(name="fortune")


@fortune_cmd.include
@arc.slash_command("fortune", "Send a user a random Fortune!")
async def fortune_command(
ctx: arc.GatewayContext,
user: arc.Option[hikari.User, arc.UserParams("A user")] = None,
) -> None:
"""Send a user a random Fortune!"""

# generate fortune
fortune_message = fortune()
assert len(fortune_message) > 0

if user is not None:
message = f"Dear {user.mention},\n```{fortune_message}```"
else:
message = f"```{fortune_message}```"

# do not exceed Discord's 2000 character limit
if len(message) > 2000:
await ctx.respond(
"The generated fortune is too long to send. Please try again.",
flags=hikari.MessageFlag.EPHEMERAL,
)

# send fortune in a codeblock
await ctx.respond(message)


@fortune_cmd.set_error_handler
async def fortune_error_handler(ctx: arc.GatewayContext, exc: Exception) -> None:
user = ctx.get_option("user", arc.OptionType.USER)
assert user is not None

if isinstance(exc, AssertionError):
await ctx.respond(
"❌ Failed to generate the fortune. Please try again.",
flags=hikari.MessageFlag.EPHEMERAL,
)
return
if isinstance(exc, hikari.NotFoundError):
await ctx.respond(
"❌ Blockbot can't find that user.", flags=hikari.MessageFlag.EPHEMERAL
)
return

raise exc


@arc.loader
def loader(client: arc.GatewayClient) -> None:
client.add_plugin(fortune_cmd)

0 comments on commit 4192be3

Please sign in to comment.