|
37 | 37 | )
|
38 | 38 | from taleweave.render.comfy import render_event
|
39 | 39 | from taleweave.utils.prompt import format_prompt
|
| 40 | +from taleweave.utils.search import list_characters |
40 | 41 |
|
41 | 42 | logger = getLogger(__name__)
|
42 | 43 | client = None
|
@@ -103,15 +104,13 @@ async def on_message(self, message):
|
103 | 104 | await message.channel.send(world_message)
|
104 | 105 | return
|
105 | 106 |
|
106 |
| - # TODO: command to list available characters |
107 |
| - |
108 |
| - if content.startswith("!help"): |
| 107 | + if content.startswith(config.bot.discord.command_prefix + "help"): |
109 | 108 | await message.channel.send(
|
110 | 109 | format_prompt("discord_help", bot_name=config.bot.discord.name_command)
|
111 | 110 | )
|
112 | 111 | return
|
113 | 112 |
|
114 |
| - if content.startswith("!join"): |
| 113 | + if content.startswith(config.bot.discord.command_prefix + "join"): |
115 | 114 | character_name = content.replace("!join", "").strip()
|
116 | 115 | if has_player(character_name):
|
117 | 116 | await channel.send(
|
@@ -149,14 +148,35 @@ def prompt_player(event: PromptEvent):
|
149 | 148 | join_event = PlayerEvent("join", character_name, user_name)
|
150 | 149 | return broadcast(join_event)
|
151 | 150 |
|
152 |
| - if content.startswith("!players"): |
| 151 | + if content.startswith(config.bot.discord.command_prefix + "characters"): |
| 152 | + world = get_current_world() |
| 153 | + if not world: |
| 154 | + await channel.send( |
| 155 | + format_prompt( |
| 156 | + "discord_characters_none", |
| 157 | + bot_name=config.bot.discord.name_title, |
| 158 | + ) |
| 159 | + ) |
| 160 | + return |
| 161 | + |
| 162 | + characters = [character.name for character in list_characters(world)] |
| 163 | + await channel.send( |
| 164 | + format_prompt( |
| 165 | + "discord_characters_list", |
| 166 | + bot_name=config.bot.discord.name_title, |
| 167 | + characters=characters, |
| 168 | + ) |
| 169 | + ) |
| 170 | + return |
| 171 | + |
| 172 | + if content.startswith(config.bot.discord.command_prefix + "players"): |
153 | 173 | players = list_players()
|
154 | 174 | await channel.send(embed=format_players(players))
|
155 | 175 | return
|
156 | 176 |
|
157 | 177 | player = get_player(user_name)
|
158 | 178 | if isinstance(player, RemotePlayer):
|
159 |
| - if content.startswith("!leave"): |
| 179 | + if content.startswith(config.bot.discord.command_prefix + "leave"): |
160 | 180 | remove_player(user_name)
|
161 | 181 |
|
162 | 182 | # revert to LLM agent
|
|
0 commit comments