Basics
Echo Bot:
The Echo Bot serves as a foundational example for users looking to get started with creating Highrise bots. This basic yet effective bot prints out everything it sees in the chat room, providing a simple way to understand how bots interact with the Highrise environment.
As a beginner-friendly bot, the Echo Bot is capable of monitoring and displaying the following events to help users become familiar with bot functionalities:
- User joining the room.
- User leaving the room.
- Hidden channel messages.
- Start of the session.
- Chat messages.
- Whispers.
- Received emotes.
- User reactions.
- Tips.
- User movements.
Here is the code:
from highrise import BaseBot, CurrencyItem, Item, Position, Reaction, SessionMetadata, User
class Bot(BaseBot):
async def on_user_join(self, user: User, position: Position) -> None:
"""On a user joining the room."""
print(f"[JOIN ] {user.username}")
async def on_user_leave(self, user: User) -> None:
"""On a user leaving the room."""
print(f"[LEAVE ] {user.username}")
async def on_channel(self, sender_id: str, message: str, tags: set[str]) -> None:
"""On a hidden channel message."""
pass
async def on_start(self, session_metadata: SessionMetadata) -> None:
print("[START ]")
async def on_chat(self, user: User, message: str) -> None:
print(f"[CHAT ] {user.username}: {message}")
async def on_whisper(self, user: User, message: str) -> None:
"""On a whisper."""
print(f"[WHISPER] {user.username} {message}")
async def on_emote(self, user: User, emote_id: str, receiver: User | None) -> None:
"""On a received emote."""
print(f"[EMOTE ] {user.username} {emote_id} {receiver}")
async def on_reaction(self, user: User, reaction: Reaction, receiver: User) -> None:
"""Called when someone reacts in the room."""
print(f"[REACTION ] {user.username} {reaction} {receiver.username}")
async def on_tip(
self, sender: User, receiver: User, tip: CurrencyItem | Item
) -> None:
"""On a tip received in the room."""
print(f"[TIP ] {sender.username} {receiver.username} {tip.type} {tip.amount}")
async def on_user_move(self, user: User, pos: Position) -> None:
"""On a user moving in the room."""
print(f"[MOVE ] {user.username} {pos.x} {pos.y} {pos.z}")