Files
pymetaverse/README.md

47 lines
1.3 KiB
Markdown
Raw Normal View History

2025-06-19 07:30:24 -04:00
[![License](https://img.shields.io/pypi/l/pymetaverse.svg)](https://pypi.python.org/pypi/pymetaverse/)
[![PyPI version shields.io](https://img.shields.io/pypi/v/pymetaverse.svg)](https://pypi.python.org/pypi/pymetaverse/)
2025-06-19 23:31:44 -04:00
# PyMetaverse
A library for connecting to Second Life, OpenSimulator, or other compatible grids.
# Simple bot example
2025-06-18 01:28:35 -04:00
```py
import asyncio
2025-06-19 07:13:02 -04:00
import datetime
2025-06-18 01:28:35 -04:00
from pymetaverse import login
2025-06-19 07:13:02 -04:00
from pymetaverse.bot import SimpleBot
from pymetaverse.const import *
2025-06-18 01:28:35 -04:00
2025-06-19 07:13:02 -04:00
bot = SimpleBot()
@bot.on("message", name="ChatFromSimulator")
def ChatFromSimulator(simulator, message):
# Ignore start / stop
if message.ChatData.ChatType in (4, 5):
return
2025-06-18 01:28:35 -04:00
2025-06-19 07:13:02 -04:00
sender = message.ChatData.FromName.rstrip(b"\0").decode()
text = message.ChatData.Message.rstrip(b"\0").decode()
2025-06-18 01:28:35 -04:00
2025-06-19 07:13:02 -04:00
if text == "logout":
bot.say(0, "Ok!")
bot.logout()
print("[{}] {}: {}".format(
datetime.datetime.now().strftime("%Y-%M-%d %H:%m:%S"),
sender,
text
))
async def main():
2025-06-19 07:30:24 -04:00
await bot.login(("Example", "Resident"), "password")
2025-06-19 07:13:02 -04:00
await bot.run()
2025-06-18 01:28:35 -04:00
2025-06-19 07:13:02 -04:00
# Run everything
2025-06-18 01:28:35 -04:00
asyncio.run(main())
2025-06-19 23:31:44 -04:00
```
# Similar Projects
* Second Life Viewer (C++) - https://github.com/secondlife/viewer
* LibreMetaverse (C#) - https://github.com/cinderblocks/libremetaverse
* Node Metaverse (NodeJS) - https://github.com/CasperTech/node-metaverse