Швидкий старт¶
Вимоги¶
- Python 3.11+
- Reticulum Network Stack (
pip install rns, версія 1.5.4+) - LXMF (
pip install lxmf, версія 1.1.1+; встановлюється автоматично разом із LXMFy) - CBOR (
cbor2, встановлюється автоматично, потрібен для RRC)
Створення першого бота (через CLI)¶
Використовуйте CLI LXMFy для створення каркаса проєкту.
-
Відкрийте термінал у каталозі, де ви хочете створити проєкт бота.
-
Виконайте команду створення:
Ця команда згенерує такі файли:
my_first_bot.py: основний файл бота з розумними типовими налаштуваннями.cogs/: каталог для розширень бота (коґів).cogs/__init__.py: робить каталогcogsпакетом Python.cogs/basic.py: приклад коґа з простими командами "hello" і "about".data/: каталог, де бот зберігатиме свої дані (типово у форматі JSON).config/: каталог, де бот зберігає свій ідентифікатор і статус анонсів.
-
Перегляньте файл
my_first_bot.py:from lxmfy import LXMFBot bot = LXMFBot( name="my_first_bot", # Ім'я бота, використовується в анонсах та ідентифікаторі announce=600, # Інтервал анонсів у секундах (10 хвилин) announce_immediately=True, # Анонсувати при першому запуску? admins=set(), # Множина хешів LXMF-адрес адміністраторів hot_reloading=False, # Увімкнути/вимкнути гаряче перезавантаження коґів rate_limit=5, # Максимум повідомлень за хвилину від користувача cooldown=60, # Період очікування в секундах для обмеження частоти max_warnings=3, # Попереджень до бану за спам warning_timeout=300, # Час (секунди) до скидання попереджень command_prefix="/", # Префікс команд (наприклад, /hello) cogs_dir="cogs", # Каталог для завантаження коґів cogs_enabled=True, # Увімкнути/вимкнути завантаження коґів permissions_enabled=False, # Увімкнути/вимкнути рольову систему прав storage_type="json", # Бекенд сховища ("json", "sqlite" або "memory") storage_path="data", # Шлях до файлів сховища/бази даних first_message_enabled=True, # Спеціальна обробка перших повідомлень event_logging_enabled=True, # Записувати події у сховище? max_logged_events=1000, # Максимум подій у журналі event_middleware_enabled=True, # Увімкнути middleware подій? announce_enabled=True, # Увімкнути/вимкнути мережеві анонси signature_verification_enabled=False, # Увімкнути/вимкнути криптографічну перевірку підписів require_message_signatures=False # Вимагати підписи у всіх повідомлень ) # Щоб додати адміністратора, знайдіть свій хеш LXMF-адреси і додайте його сюди: # bot.config.admins.add("your_lxmf_hash_here") # bot.admins = bot.config.admins # Щоб запущений екземпляр знав про це # Приклад підготовки поля іконки LXMF (необов'язково) # from lxmfy import IconAppearance, pack_icon_appearance_field # try: # icon_data = IconAppearance(icon_name="emoji_objects", fg_color=b'\xFF\xA5\x00', bg_color=b'\x8B\x45\x13') # Помаранчева на коричневому # bot.icon_field = pack_icon_appearance_field(icon_data) # Зберегти для send/reply # except Exception as e: # print(f"Не вдалося підготувати поле іконки: {e}") # bot.icon_field = None if __name__ == "__main__": print(f"Starting bot: {bot.config.name}") print(f"Bot LXMF Address: {bot.local.hash}") # Виводить адресу бота bot.run() -
(Необов'язково) Додайте свій хеш адміністратора:
- Знайдіть свій хеш LXMF-адреси (наприклад, у клієнті Reticulum, такому як Sideband або NomadNet).
- Розкоментуйте й відредагуйте рядок
bot.config.admins.add(...)уmy_first_bot.py, замінивши"your_lxmf_hash_here"на свій справжній хеш.
-
Запустіть бота:
Бот запуститься, виведе свою LXMF-адресу, може надіслати анонс у мережу Reticulum і почне приймати повідомлення.
Взаємодія з ботом¶
- Надішліть повідомлення на LXMF-адресу бота зі свого клієнта.
- Спробуйте приклад команди: надішліть боту
/hello. Він має відповісти "Hello<your_hash>!". Якщо ви розкоментували приклад з іконкою вище, відповідь може також містити іконку. - Спробуйте команду довідки: надішліть
/help.
Що налаштувати далі¶
Обробники повідомлень
@bot.on_first_message()для першого повідомлення від кожного відправника@bot.on_message()для всіх повідомлень до обробки команд
Доставка
direct_delivery_retriesуLXMFBot(...)повторює пряму доставку перед переходом на propagationpropagation_node(абоbot.set_propagation_node(...)) вибирає конкретний вузол поширення LXMF- Персистентність вихідної черги увімкнена типово
(
message_persistence_enabled=True) з обмеженою чергою (message_queue_size)
Reticulum Relay Chat (RRC)
- Підключайтеся до хабів з
rrc_enabled=Trueабо шаблономrrc - Використовуйте ту саму конфігурацію Reticulum, що в MeshChatX або
вашого хаба (
reticulum_config_dirабоLXMFY_RETICULUM_CONFIG_DIR, зазвичай~/.reticulum) - Див. Створення ботів про ботів для кімнат і виявлення хабів
Безпека
signature_verification_enabled=Trueперевіряє результати валідації підписів LXMFrequire_message_signatures=Trueвідхиляє непідписані або невалідні повідомлення- У Linux
landlock_enabled=True(типово) застосовує файлову пісочницю Landlock LSM. Перевизначається черезLXMFY_LANDLOCK=0абоLXMFY_LANDLOCK=1 - Зовнішні скриптові коґи можуть використовувати Landlock, bubblewrap
або firejail через
external_cogs_sandbox_type - LXMF підписує вихідні повідомлення. LXMFy забезпечує політику перевірки та опційну ізоляцію
Розробка
make typecheckзапускаєpyright lxmfymake ciзапускає лінт, перевірку типів, перевірку безпеки, тести та збірку
Див. Створення ботів і Довідник API про реєстрацію команд, коґи та деталі API.