Встановлення модуля
З файлу
Надішліть .go-файл у будь-який чат, відповідайте на нього й напишіть:
.loadmodGoroku збере його як нативний Go-плагін, зареєструє команди й запам'ятає, щоб завантажити під час наступного старту.
Аліаси: .lm
За посиланням
.dlmod https://example.com/Weather.goАбо за іменем, із налаштованого репозиторію:
.dlmod WeatherАліаси: .dlm
Завантаження лише через HTTPS. Приватні, loopback, link-local і CGNAT-адреси відхиляються, причому перевіряється розв'язаний IP, а не лише ім'я хоста.
Видалення
.unloadmod WeatherАліаси: .ulm
Вивантаження не вивантажує код
Go не вміє вивантажувати завантажений плагін із пам'яті. .unloadmod знімає реєстрацію обробників, і модуль перестає щось отримувати, але його код залишається в процесі до перезапуску. Для чистого стану після видалення перезапустіться через .restart.
Репозиторії
.addrepo https://raw.githubusercontent.com/user/modules/main
.delrepo https://raw.githubusercontent.com/user/modules/mainПісля цього .dlmod <ім'я> шукає по налаштованих репозиторіях.
Перед встановленням чужого модуля
Нативний модуль — це звичайний код на Go всередині вашого процесу юзербота, з вашою сесією Telegram і правами вашого сервера. Він може читати всі повідомлення, доступні акаунту, писати від вашого імені, читати файли й відкривати мережеві з'єднання. Пісочниці немає.
Спершу прочитайте вихідний код. Конкретно:
- Чи надсилає він дані туди, куди ви не очікували? Шукайте
http.,net.. - Чи запускає зовнішні програми? Шукайте
exec.. - Чи торкається файлів поза своїм сховищем? Шукайте
os.. - Чи реєструє вотчер? Той бачить кожне доступне вам повідомлення.
.eval не безпечніший: він виконується всередині процесу бота через Yaegi з живими клієнтом, базою та завантажувачем, а перервати Yaegi не можна — зависла код тримає горутину до перезапуску. Тому команда доступна лише власнику.
Що робити, якщо не працює
«module X is already registered» — модуль із таким іменем уже завантажено. Спершу .unloadmod X.
«command collision: y» — команда або аліас уже зайняті іншим модулем. Перейменуйте свою; Goroku відмовить, а не перекриє чужу мовчки.
Помилки компіляції — номери рядків стосуються вашого файлу. Виправте й знову .loadmod.
Модуль завантажився, але нічого не робить — перевірте через .help, що команда справді зареєстрована. Якщо в CommandMetas стоїть обмеження на кшталт OnlyGroups, у приватному чаті команда не спрацює.