doctor
29.01.2024, 12:14
По просьбам трудящихся сделан новый бот, который пересылает чат миров в Telegram и обратно. Таким образом, можно "быть" в мирах с мобилки или любого другого девайса куда можно установить телеграм. Похожая идея уже была воплощена (http://forum.activeworlds.ru/showthread.php?433), но теперь она адаптирована к новым реалиям (телеграм) и доработана. Бот в первую очередь предназначен для хранителей миров которые хотят "подключить" чат своего мира к телеграму, но в принципе его может запускать любой гражданин (тогда чат будет локально в мирах).
Вот как это вглядит:
http://teatr.activeworlds.ru/bots/telegram_bot/img/telegram_relay_bot.jpg (http://teatr.activeworlds.ru/bots/telegram_bot/img/telegram_relay_bot.jpg)
Бот на скриншоте "RUAW Chat Relay" (https://t.me/ruawchat_bot) это бот в мире Start, ему можно написать сообщение в Telegram чтобы переслать его в Start. Этот бот пока работает в тестовом режиме и не всегда онлайн. Ниже инструкции как создасть и запустить своего телеграм-бота для связи с мирами. Для тех у кого есть навыки программирования на C++ и желание добавить новые функции, исходный код и инструкции см в "Кратком руководстве программиста" ниже.
Установка и настройка бота
Взять файлы отсюда: http://teatr.activeworlds.ru/bots/telegram_bot/ruawchat_telegram_v1.3.zip
Распаковать архив и запустить ruawchat_telegram.exe. Системные требования: Windows (протестирован на 10 версии), вроде как работает также из-под Wine на Linux. Если при запуске exe окошко сразу закрывается, возможно не хватает библиотек. В этом случае может помочь установка Visual C++ Redistributable с сайта Microsoft (https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170).
При первом запуске бот будет спрашивать настройки вроде номера гражданства, пароля привелегий и т.д. - здесь всё должно быть достаточно очевидно. Дальше спросит "Telegram token (for Telegram bot)". Чтобы получить этот токен, надо сначала создать бота в Telegram, для этого нужно написать @BotFather и следовать инструкциям. Именно с этим ботом люди в Telegram будут связываться чтобы писать сообщения в миры. Еще спросит "Your telegram ID?" - этот вопрос можно пропустить но лучше сразу задать свой Telegram ID, если известно, чтобы автоматически быть админом в боте. ID это не номер телефона! Если не знаешь свой ID тогда пропусти этот вопрос, потом увидишь в логах бота.
Если всё прошло успешно, бот напишет "Connecting to Telegram bot with specified token... Done." Теперь можно попробовать написать боту в телеграм (для этого надо его там найти и начать чат). Бот ответит "Похоже мы еще не знакомы..." - значит всё в порядке, см. следующую инструкцию.
Краткое руководство пользователя
При первом общении с ботом в телеграме он попросит задать имя с помощью команды /setname. Лучше задать свой ник в мирах, но можно любое имя. После того как имя задано можно написать /start чтобы начать пересылку сообщений. С этого момента все сообщения отправленные боту (кроме команд, которые начинаются с /) будут пересылаться в миры и обратно. В мирах работа бота зависит от привилегий. Если есть привелегии хранителя, отправка сообщений будет со всего мира (глобал), в противном случае в локальный чат рядом с ботом - и обратно.
Если при установке бота не был задан твой telegram ID, тогда в мирах имя будет отображаться в кавычках (и серым текстом если бот в глобале). Так же будет для всех новых пользователей бота. Это сделано чтобы показать что имя было выбрано пользователем самостоятельно и никем не проверено. То есть как турист в мирах может выбрать себе любое имя, в том числе такое же как и у существующих граждан. Чтобы верифицировать имена пользователей (доступно только админам - об этом ниже), нужно написать боту /verify <telegram_id> <name>. Например /verify 123456 doctor. После этого пользователь с телеграм ID 123456 может писать от имени doctor нормальным текстом без кавычек, как гражданин в мирах.
Так где же взять telegram ID и как сделать себя админом бота? (Если ID уже был задан при установке бота, пропусти этот шаг). Свой telegram id, а так же любого кто написал боту можно увидеть в консоли бота - по сообщениям вроде "Telegram user John Smith (id:123456) wrote...". Если бот был запущен без указания telegram ID хозяина, тогда нужно его закрыть, и в файле names_and_privilegies.txt поменять строку вроде 123456 doctor doctor 0 0 0 на 123456 doctor doctor 1 1 0 - поменять два нуля на единицы, таким образом верифицировав свое имя и добавив себя в админы. Затем запустить бота опять. К счастью так нужно сделать только один раз для себя.
После этого можно верифицировать имена пользователей командой /verify <telegram_id> <name> (см выше), а также доступны другие команды админа. А именно:
/ban <telegram_id> - очевидно. Для этого пользователя будет остановлена пересылка сообщений в обе стороны.
/restore <telegram_id> - разбанить пользователя.
/forget <telegram_id> - "забыть" пользователя. То есть удалить из админов, верифицированных имен и остановить пересылку сообщений. Учти в этом случае пользователь может опять начать чат, только потеряет все привилегии.
/addadmin <telegram_id> - добавить в админы. Осторожнее с этим, админы могут всех банить и при этом могут разбанить сами себя.
/settimeout <0-720> - установить время, в часах, после которого пользователям телеграм автоматически отключается пересылка сообщений при неактивности. Они всегда могут её включить обратно написав /start. Смысл этой настройки в том, чтобы если бот работает постоянно, кто-то в телеграм не получал все сообщения чата, скажем, за год, если один раз начал чат с ботом. Активные пользователи (кто отправляет сообщения) с этим ограничением не столкнутся. Если задать /settimeout 0 то функция будет отключена - все сообщения будут пересылаться всегда. Значение по умолчанию: 24 часа
Другие команды доступные всем пользователям: /help, /settings - очевидно, а также /stop - остановить пересылку сообщений. Это удобно чтобы бот не флудил сообщениями из миров, т.е. "остановить" чат. При этом все настройки сохраняются и обратно включить можно в любой момент написав /start.
Краткое руководство программиста
Исходный код в архиве вместе с ботом - "source.zip", он включает необходимые библиотеки для API миров, но не телеграм (об этом ниже).
Код написан на C++, основной файл программы mobile_chat/main.cpp.
Проект создан в Visual Studio 2022 (Community Edition), основной файл решения ruawchat_telegram.sln. Рекомендуется использовать ту же версию для более предсказуемых результатов.
Код бота зависит от библиотеки https://github.com/reo7sp/tgbot-cpp/tree/v1.7.2 (Telegram C++ API) и других библиотек, которые автоматически устанавливаются в систему при установке tgbot: см инструкции "Library installation on Windows" в https://github.com/reo7sp/tgbot-cpp/blob/v1.7.2/README.md. Инструкции в подразделе "Setup project with CMakeLists" выполнять не нужно - проект уже установлен в решение Visual Studio.
Документация (SDK) миров доступна здесь: https://wiki.activeworlds.com//index.php?title=SDK.
Вот как это вглядит:
http://teatr.activeworlds.ru/bots/telegram_bot/img/telegram_relay_bot.jpg (http://teatr.activeworlds.ru/bots/telegram_bot/img/telegram_relay_bot.jpg)
Бот на скриншоте "RUAW Chat Relay" (https://t.me/ruawchat_bot) это бот в мире Start, ему можно написать сообщение в Telegram чтобы переслать его в Start. Этот бот пока работает в тестовом режиме и не всегда онлайн. Ниже инструкции как создасть и запустить своего телеграм-бота для связи с мирами. Для тех у кого есть навыки программирования на C++ и желание добавить новые функции, исходный код и инструкции см в "Кратком руководстве программиста" ниже.
Установка и настройка бота
Взять файлы отсюда: http://teatr.activeworlds.ru/bots/telegram_bot/ruawchat_telegram_v1.3.zip
Распаковать архив и запустить ruawchat_telegram.exe. Системные требования: Windows (протестирован на 10 версии), вроде как работает также из-под Wine на Linux. Если при запуске exe окошко сразу закрывается, возможно не хватает библиотек. В этом случае может помочь установка Visual C++ Redistributable с сайта Microsoft (https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170).
При первом запуске бот будет спрашивать настройки вроде номера гражданства, пароля привелегий и т.д. - здесь всё должно быть достаточно очевидно. Дальше спросит "Telegram token (for Telegram bot)". Чтобы получить этот токен, надо сначала создать бота в Telegram, для этого нужно написать @BotFather и следовать инструкциям. Именно с этим ботом люди в Telegram будут связываться чтобы писать сообщения в миры. Еще спросит "Your telegram ID?" - этот вопрос можно пропустить но лучше сразу задать свой Telegram ID, если известно, чтобы автоматически быть админом в боте. ID это не номер телефона! Если не знаешь свой ID тогда пропусти этот вопрос, потом увидишь в логах бота.
Если всё прошло успешно, бот напишет "Connecting to Telegram bot with specified token... Done." Теперь можно попробовать написать боту в телеграм (для этого надо его там найти и начать чат). Бот ответит "Похоже мы еще не знакомы..." - значит всё в порядке, см. следующую инструкцию.
Краткое руководство пользователя
При первом общении с ботом в телеграме он попросит задать имя с помощью команды /setname. Лучше задать свой ник в мирах, но можно любое имя. После того как имя задано можно написать /start чтобы начать пересылку сообщений. С этого момента все сообщения отправленные боту (кроме команд, которые начинаются с /) будут пересылаться в миры и обратно. В мирах работа бота зависит от привилегий. Если есть привелегии хранителя, отправка сообщений будет со всего мира (глобал), в противном случае в локальный чат рядом с ботом - и обратно.
Если при установке бота не был задан твой telegram ID, тогда в мирах имя будет отображаться в кавычках (и серым текстом если бот в глобале). Так же будет для всех новых пользователей бота. Это сделано чтобы показать что имя было выбрано пользователем самостоятельно и никем не проверено. То есть как турист в мирах может выбрать себе любое имя, в том числе такое же как и у существующих граждан. Чтобы верифицировать имена пользователей (доступно только админам - об этом ниже), нужно написать боту /verify <telegram_id> <name>. Например /verify 123456 doctor. После этого пользователь с телеграм ID 123456 может писать от имени doctor нормальным текстом без кавычек, как гражданин в мирах.
Так где же взять telegram ID и как сделать себя админом бота? (Если ID уже был задан при установке бота, пропусти этот шаг). Свой telegram id, а так же любого кто написал боту можно увидеть в консоли бота - по сообщениям вроде "Telegram user John Smith (id:123456) wrote...". Если бот был запущен без указания telegram ID хозяина, тогда нужно его закрыть, и в файле names_and_privilegies.txt поменять строку вроде 123456 doctor doctor 0 0 0 на 123456 doctor doctor 1 1 0 - поменять два нуля на единицы, таким образом верифицировав свое имя и добавив себя в админы. Затем запустить бота опять. К счастью так нужно сделать только один раз для себя.
После этого можно верифицировать имена пользователей командой /verify <telegram_id> <name> (см выше), а также доступны другие команды админа. А именно:
/ban <telegram_id> - очевидно. Для этого пользователя будет остановлена пересылка сообщений в обе стороны.
/restore <telegram_id> - разбанить пользователя.
/forget <telegram_id> - "забыть" пользователя. То есть удалить из админов, верифицированных имен и остановить пересылку сообщений. Учти в этом случае пользователь может опять начать чат, только потеряет все привилегии.
/addadmin <telegram_id> - добавить в админы. Осторожнее с этим, админы могут всех банить и при этом могут разбанить сами себя.
/settimeout <0-720> - установить время, в часах, после которого пользователям телеграм автоматически отключается пересылка сообщений при неактивности. Они всегда могут её включить обратно написав /start. Смысл этой настройки в том, чтобы если бот работает постоянно, кто-то в телеграм не получал все сообщения чата, скажем, за год, если один раз начал чат с ботом. Активные пользователи (кто отправляет сообщения) с этим ограничением не столкнутся. Если задать /settimeout 0 то функция будет отключена - все сообщения будут пересылаться всегда. Значение по умолчанию: 24 часа
Другие команды доступные всем пользователям: /help, /settings - очевидно, а также /stop - остановить пересылку сообщений. Это удобно чтобы бот не флудил сообщениями из миров, т.е. "остановить" чат. При этом все настройки сохраняются и обратно включить можно в любой момент написав /start.
Краткое руководство программиста
Исходный код в архиве вместе с ботом - "source.zip", он включает необходимые библиотеки для API миров, но не телеграм (об этом ниже).
Код написан на C++, основной файл программы mobile_chat/main.cpp.
Проект создан в Visual Studio 2022 (Community Edition), основной файл решения ruawchat_telegram.sln. Рекомендуется использовать ту же версию для более предсказуемых результатов.
Код бота зависит от библиотеки https://github.com/reo7sp/tgbot-cpp/tree/v1.7.2 (Telegram C++ API) и других библиотек, которые автоматически устанавливаются в систему при установке tgbot: см инструкции "Library installation on Windows" в https://github.com/reo7sp/tgbot-cpp/blob/v1.7.2/README.md. Инструкции в подразделе "Setup project with CMakeLists" выполнять не нужно - проект уже установлен в решение Visual Studio.
Документация (SDK) миров доступна здесь: https://wiki.activeworlds.com//index.php?title=SDK.