Fix !wordle silence in public rooms — notify user to check DMs
When !wordle is used in a public room (e.g. Commands), the bot now sends "📬 Check your DMs to play Wordle!" before redirecting the game to a DM. Previously the user saw no response at all. Also refactors handle_wordle to resolve the DM room once and reuse it across all subcommands, eliminating repeated _get_dm_room calls. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
22
wordle.py
22
wordle.py
@@ -749,27 +749,29 @@ async def handle_wordle(
|
|||||||
subcmd = parts[0].lower() if parts else ""
|
subcmd = parts[0].lower() if parts else ""
|
||||||
sub_args = parts[1] if len(parts) > 1 else ""
|
sub_args = parts[1] if len(parts) > 1 else ""
|
||||||
|
|
||||||
|
# Share always goes to the public room
|
||||||
|
if subcmd == "share":
|
||||||
|
await wordle_share(client, room_id, sender)
|
||||||
|
return
|
||||||
|
|
||||||
|
# All other commands route through DM
|
||||||
|
dm_room, origin = await _get_dm_room(client, room_id, sender)
|
||||||
|
|
||||||
|
# Notify the public room if we're redirecting to a DM
|
||||||
|
if dm_room != room_id:
|
||||||
|
await send_text(client, room_id, "\U0001f4ec Check your DMs to play Wordle!")
|
||||||
|
|
||||||
if subcmd == "help":
|
if subcmd == "help":
|
||||||
# Help can go to the same room
|
|
||||||
dm_room, origin = await _get_dm_room(client, room_id, sender)
|
|
||||||
await wordle_help(client, dm_room)
|
await wordle_help(client, dm_room)
|
||||||
elif subcmd == "stats":
|
elif subcmd == "stats":
|
||||||
dm_room, origin = await _get_dm_room(client, room_id, sender)
|
|
||||||
await wordle_stats(client, dm_room, sender)
|
await wordle_stats(client, dm_room, sender)
|
||||||
elif subcmd == "hard":
|
elif subcmd == "hard":
|
||||||
dm_room, origin = await _get_dm_room(client, room_id, sender)
|
|
||||||
await wordle_toggle_hard(client, dm_room, sender)
|
await wordle_toggle_hard(client, dm_room, sender)
|
||||||
elif subcmd == "share":
|
|
||||||
# Share goes to the PUBLIC room (origin), not DM
|
|
||||||
await wordle_share(client, room_id, sender)
|
|
||||||
elif subcmd == "give" and sub_args.lower().startswith("up"):
|
elif subcmd == "give" and sub_args.lower().startswith("up"):
|
||||||
dm_room, origin = await _get_dm_room(client, room_id, sender)
|
|
||||||
await wordle_give_up(client, dm_room, sender)
|
await wordle_give_up(client, dm_room, sender)
|
||||||
elif subcmd == "":
|
elif subcmd == "":
|
||||||
dm_room, origin = await _get_dm_room(client, room_id, sender)
|
|
||||||
await wordle_start_or_status(client, dm_room, sender, origin)
|
await wordle_start_or_status(client, dm_room, sender, origin)
|
||||||
elif len(subcmd) == 5 and subcmd.isalpha():
|
elif len(subcmd) == 5 and subcmd.isalpha():
|
||||||
dm_room, origin = await _get_dm_room(client, room_id, sender)
|
|
||||||
await wordle_guess(client, dm_room, sender, subcmd.upper())
|
await wordle_guess(client, dm_room, sender, subcmd.upper())
|
||||||
else:
|
else:
|
||||||
await send_text(
|
await send_text(
|
||||||
|
|||||||
Reference in New Issue
Block a user