Skip to content

Встановлення модуля

З файлу

Надішліть .go-файл у будь-який чат, відповідайте на нього й напишіть:

.loadmod

Goroku збере його як нативний 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, у приватному чаті команда не спрацює.

Released under the GNU AGPL v3 License.