1
0
Fork 0

add discord command to list characters

This commit is contained in:
Sean Sube 2024-06-03 22:00:14 -05:00
parent c7a020dafb
commit 1c36bc8386
Signed by: ssube
GPG Key ID: 3EED7B957D362AF1
2 changed files with 30 additions and 6 deletions

View File

@ -1,4 +1,8 @@
prompts: prompts:
discord_characters_none: There are no characters available to play.
discord_characters_list: |
**Characters:**
{{ characters | and_list }}
discord_help: | discord_help: |
**Commands:** **Commands:**
- `!help` - Show this help message - `!help` - Show this help message

View File

@ -37,6 +37,7 @@ from taleweave.player import (
) )
from taleweave.render.comfy import render_event from taleweave.render.comfy import render_event
from taleweave.utils.prompt import format_prompt from taleweave.utils.prompt import format_prompt
from taleweave.utils.search import list_characters
logger = getLogger(__name__) logger = getLogger(__name__)
client = None client = None
@ -103,15 +104,13 @@ class AdventureClient(Client):
await message.channel.send(world_message) await message.channel.send(world_message)
return return
# TODO: command to list available characters if content.startswith(config.bot.discord.command_prefix + "help"):
if content.startswith("!help"):
await message.channel.send( await message.channel.send(
format_prompt("discord_help", bot_name=config.bot.discord.name_command) format_prompt("discord_help", bot_name=config.bot.discord.name_command)
) )
return return
if content.startswith("!join"): if content.startswith(config.bot.discord.command_prefix + "join"):
character_name = content.replace("!join", "").strip() character_name = content.replace("!join", "").strip()
if has_player(character_name): if has_player(character_name):
await channel.send( await channel.send(
@ -149,14 +148,35 @@ class AdventureClient(Client):
join_event = PlayerEvent("join", character_name, user_name) join_event = PlayerEvent("join", character_name, user_name)
return broadcast(join_event) return broadcast(join_event)
if content.startswith("!players"): if content.startswith(config.bot.discord.command_prefix + "characters"):
world = get_current_world()
if not world:
await channel.send(
format_prompt(
"discord_characters_none",
bot_name=config.bot.discord.name_title,
)
)
return
characters = [character.name for character in list_characters(world)]
await channel.send(
format_prompt(
"discord_characters_list",
bot_name=config.bot.discord.name_title,
characters=characters,
)
)
return
if content.startswith(config.bot.discord.command_prefix + "players"):
players = list_players() players = list_players()
await channel.send(embed=format_players(players)) await channel.send(embed=format_players(players))
return return
player = get_player(user_name) player = get_player(user_name)
if isinstance(player, RemotePlayer): if isinstance(player, RemotePlayer):
if content.startswith("!leave"): if content.startswith(config.bot.discord.command_prefix + "leave"):
remove_player(user_name) remove_player(user_name)
# revert to LLM agent # revert to LLM agent