Skip to content

Commit

Permalink
add /fortune command (#50)
Browse files Browse the repository at this point in the history
  • Loading branch information
wizzdom authored Oct 29, 2024
1 parent 14c8ed6 commit c3b04f8
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ ruff==0.2.0
pre-commit==3.6.0
python-dotenv==1.0.1
pyfiglet==1.0.2
fortune-python==1.1.1
45 changes: 45 additions & 0 deletions src/extensions/fortune.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
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 random Fortune!"""

# generate fortune
fortune_message = fortune()
if not fortune_message:
await ctx.respond(
"❌ Failed to generate fortune. Please try again.",
flags=hikari.MessageFlag.EPHEMERAL,
)
return

# mention user if present
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(
"❌ FThe generated fortune is too long to send. Please try again.",
flags=hikari.MessageFlag.EPHEMERAL,
)
return

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


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

0 comments on commit c3b04f8

Please sign in to comment.