Telegram.zip ( 407,63 килобайт )
Кол-во скачиваний: 285
Архив распаковать рядом с exe пилота.
Создаём бота в телеграмм, получает токен и ид чата.
Пример использования:
--lua
local ffi = require('ffi')
local telegramm = ffi.load('SendTelegram.dll')
log 'clear' log 'mode compact'
ffi.cdef[[
int sendtelegrammessage(const char* token, const char* chat_id, const char* text, char* result);
int sendtelegramphoto(const char* token, const char* chat_id, const char* path_to_photo, const char* caption, char* result);
int sendtelegramdocument(const char* token, const char* chat_id, const char* path_to_photo, const char* caption, char* result);
int gettelegrammessage(const char* token, const char* chat_id, char* result);
int gettelegramdocument(const char* token, const char* chat_id, const char* path_to_document);
]]
local token="1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -- token, указать свой
local chat_id="1234567890" -- id chat, указать свой. Здесь должны быть цифры. Формат @name более не поддерживается телеграмом.
telegramm.sendtelegrammessage(token, chat_id, "Текст сообщения", nil) -- отправить сообщение
printscreen (0, 0, 0, 0, 0, [[C:\window.jpg]]) -- сохранить скрин экрана
telegramm.sendtelegramphoto(token, chat_id, [[C:\window.jpg]], "", nil) -- отправить фото
telegramm.sendtelegramdocument(token, chat_id, [[C:\window.jpg]], "", nil) -- отправить файл
local response = ffi.new('char[9999]')
telegramm.sendtelegrammessage(token, chat_id, "Текст сообщения", response) -- отправить сообщение и получить ответ в формате JSON
log(ffi.string(response))
--lua
local ffi = require('ffi')
local telegram = ffi.load('SendTelegram.dll')
log 'clear' log 'mode compact'
ffi.cdef[[
int gettelegrammessage(const char* token, const char* chat_id, char* result);
]]
local token="1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -- token, указать свой
local chat_id="1234567890" -- id chat, указать свой. Здесь должны быть цифры. Формат @name более не поддерживается телеграмом.
local new_message, last_message = ffi.new('char[999]')
telegram.gettelegrammessage(token, chat_id, new_message) -- получить последнее сообщение
log ('Последнее сообщение: ' .. ffi.string(new_message))
last_message = ffi.string(new_message) -- запомнить текст сообщения
log ('Ожидание нового сообщения')
while true do
telegram.gettelegrammessage(token, chat_id, new_message) -- получить последнее сообщение
if ffi.string(new_message) ~= last_message then -- если сообщение не совпадает с последним
-- тут нужные действия в зависимости от текста сообщения
log('Новое сообщение: ' .. ffi.string(new_message))
break
end
wait (2000)
end
В Н И М А Н И Е ! ! !
chat id - это цифры, а не название в формате @name_something. Узнать id можно добавив бота куда либо и выполнив запрос в браузер:
https://api.telegram.org/botВАШ_API_KEY/getUpdates
Либо воспозовашись услугами других ботов (в гугле находятся пачками).
Крут =) Реально полезно будет.
Думаю не помешало бы добавить пару ссылок куда чего и как.
Крутая тема, встал вопрос, как вставить в сообщение переменную?
заранее в переменной каждый раз новое число и его нужно вставить
Всмысле?
a = "вася"
b = a
видимо нужно так
a = 10
text = 'msg ' + a + ' end'
--lua
local ffi = require('ffi')
local telegramm = ffi.load('SendTelegram.dll')
ffi.cdef[[
int sendtelegrammessage(const char* token, const char* chat_id, const char* text, char* result);
]]
local token="1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -- token, указать свой
local chat_id="1234567890" -- id chat, указать свой
local x = 0
while true do
local message = "X = " .. tostring(x)
telegramm.sendtelegrammessage(token, chat_id, message, nil) -- отправить сообщение
x = x + 1
wait (2000)
end
Спасибо!
Добавил в первый пост пример как ожидать сообщения от бота. Можно использовать для управления работы скрипта.
Интересная штука, спасибо.
А нельзя как-то пилоту сказать, чтобы искал библиотеки в ином месте, чтобы корень не загромождать?
package.cpath
package.path
Это по сути обычные текстовые переменные с набором адресов где искать библиотеки, но будьте аккуратны они задаются паттернами.
https://www.lua.org/manual/5.1/manual.html#pdf-package.path
В общем потестил сутки работало ок, теперь не понятное поведение.
while true do
telegram.gettelegrammessage(token, chat_id, new_message) -- получить последнее сообщение
if ffi.string(new_message) ~= last_message then -- если сообщение не совпадает с последним
-- тут в зависимости от сообщения запускает/останавливает скрипты в пилоте.
last_message = ffi.string(new_message) -- запомнить текст сообщения
end
wait (2000)
end
Работал пару месяцев, в один момент перестал работать(
// решилось сменой провайдера
Я в итоге отказался от этого решения, пользуюсь своим работает без проблем. Руки не доходят оформить пост и выложить, да и не знаю как лучше сделать, выложить в эту тему или сделать новую.
Лучше в новую. Прилеплю тему наверх, все дела.
telegram.gettelegrammessage(token, chat_id, new_message)
telegram.gettelegrammessage(token, chat_id, new_message)
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)