49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
"""
|
|
A simple client that just says hello to people
|
|
"""
|
|
|
|
import asyncio
|
|
from contextlib import aclosing
|
|
import os
|
|
|
|
from hippolyzer.lib.base.message.message import Message
|
|
from hippolyzer.lib.base.templates import ChatType, ChatSourceType
|
|
from hippolyzer.lib.client.hippo_client import HippoClient
|
|
|
|
|
|
async def amain():
|
|
client = HippoClient()
|
|
|
|
async def _respond_to_chat(message: Message):
|
|
if message["ChatData"]["SourceID"] == client.session.agent_id:
|
|
return
|
|
if message["ChatData"]["SourceType"] != ChatSourceType.AGENT:
|
|
return
|
|
if "hello" not in str(message["ChatData"]["Message"]).lower():
|
|
return
|
|
await client.send_chat(f'Hello {message["ChatData"]["FromName"]}!', chat_type=ChatType.SHOUT)
|
|
|
|
async with aclosing(client):
|
|
await client.login(
|
|
username=os.environ["HIPPO_USERNAME"],
|
|
password=os.environ["HIPPO_PASSWORD"],
|
|
start_location=os.environ.get("HIPPO_START_LOCATION", "last"),
|
|
)
|
|
print("I'm here")
|
|
await client.send_chat("Hello World!", chat_type=ChatType.SHOUT)
|
|
client.session.message_handler.subscribe("ChatFromSimulator", _respond_to_chat)
|
|
|
|
# Example of how to work with caps
|
|
async with client.main_region.caps_client.get("SimulatorFeatures") as features_resp:
|
|
print("Features:", await features_resp.read_llsd())
|
|
|
|
while True:
|
|
try:
|
|
await asyncio.sleep(0.001)
|
|
except (KeyboardInterrupt, asyncio.CancelledError):
|
|
await client.send_chat("Goodbye World!", chat_type=ChatType.SHOUT)
|
|
return
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(amain())
|