Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Отправка в телеграм сообщения, файла
cirus
сообщение 3.5.2022, 14:42
Сообщение #1


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26745
Пользователь №: 16.971
Возраст: 29



Прикрепленный файл  Telegram.zip ( 407,63 килобайт ) Кол-во скачиваний: 284

Архив распаковать рядом с 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


Сообщение отредактировал DarkMaster - 3.8.2022, 22:49
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 3.5.2022, 16:40
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



В Н И М А Н И Е ! ! !
chat id - это цифры, а не название в формате @name_something. Узнать id можно добавив бота куда либо и выполнив запрос в браузер:
https://api.telegram.org/botВАШ_API_KEY/getUpdates
Либо воспозовашись услугами других ботов (в гугле находятся пачками).


Крут =) Реально полезно будет.

Думаю не помешало бы добавить пару ссылок куда чего и как.

Сообщение отредактировал DarkMaster - 3.8.2022, 22:54


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Izatii
сообщение 4.5.2022, 23:50
Сообщение #3


*

Registred
Сообщений: 2
Регистрация: 4.5.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.257
Возраст: 23



Крутая тема, встал вопрос, как вставить в сообщение переменную?
заранее в переменной каждый раз новое число и его нужно вставить
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.5.2022, 0:11
Сообщение #4


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Всмысле?

a = "вася"
b = a


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 5.5.2022, 0:24
Сообщение #5


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



видимо нужно так

a = 10

text = 'msg ' + a + ' end'
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 5.5.2022, 1:44
Сообщение #6


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26745
Пользователь №: 16.971
Возраст: 29



Код
--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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Izatii
сообщение 5.5.2022, 2:24
Сообщение #7


*

Registred
Сообщений: 2
Регистрация: 4.5.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.257
Возраст: 23



Спасибо!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.5.2022, 13:36
Сообщение #8


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26745
Пользователь №: 16.971
Возраст: 29



Добавил в первый пост пример как ожидать сообщения от бота. Можно использовать для управления работы скрипта.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
apaul
сообщение 8.5.2022, 17:30
Сообщение #9


**

Neophyte
Сообщений: 36
Регистрация: 19.8.2021
Группа: Пользователи
Наличность: 0
Пользователь №: 20.051



Интересная штука, спасибо.
А нельзя как-то пилоту сказать, чтобы искал библиотеки в ином месте, чтобы корень не загромождать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.5.2022, 18:58
Сообщение #10


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



package.cpath
package.path

Это по сути обычные текстовые переменные с набором адресов где искать библиотеки, но будьте аккуратны они задаются паттернами.
https://www.lua.org/manual/5.1/manual.html#pdf-package.path

Сообщение отредактировал DarkMaster - 8.5.2022, 19:50


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 13.5.2022, 22:16
Сообщение #11


****

Apprentice
Сообщений: 283
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8477
Пользователь №: 19.451
Возраст: 32



В общем потестил сутки работало ок, теперь не понятное поведение.
Код
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

Такая конструкция четко отработала +- сутки без проблем, теперь рандомно сама запускает скрипты.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
NikitaRat
сообщение 12.6.2022, 20:14
Сообщение #12


*

Registred
Сообщений: 2
Регистрация: 11.1.2021
Группа: Пользователи
Наличность: 0
Пользователь №: 19.853
Возраст: 22



Работал пару месяцев, в один момент перестал работать(
// решилось сменой провайдера

Сообщение отредактировал DarkMaster - 2.8.2022, 19:31
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 3.8.2022, 22:14
Сообщение #13


****

Apprentice
Сообщений: 283
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8477
Пользователь №: 19.451
Возраст: 32



Я в итоге отказался от этого решения, пользуюсь своим работает без проблем. Руки не доходят оформить пост и выложить, да и не знаю как лучше сделать, выложить в эту тему или сделать новую.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.8.2022, 11:02
Сообщение #14


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Лучше в новую. Прилеплю тему наверх, все дела.

Сообщение отредактировал DarkMaster - 4.8.2022, 11:31


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
apaul
сообщение 8.8.2022, 12:38
Сообщение #15


**

Neophyte
Сообщений: 36
Регистрация: 19.8.2021
Группа: Пользователи
Наличность: 0
Пользователь №: 20.051



Цитата(Madeus @ 3.8.2022, 22:14) *

пользуюсь своим работает без проблем. Руки не доходят оформить пост и выложить, да и не знаю как лучше сделать, выложить в эту тему или сделать новую.

Очень стало интересно. А то захотел прикрутить в дополнение с отчетам, еще и управление к скрипту, а оказалось что это решение у меня при отправке работает прекрасно, а вот с получением сообщений полная беда. Просто по
Код
telegram.gettelegrammessage(token, chat_id, new_message)
ничего не приходит (IMG:style_emoticons/default/sad.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 8.8.2022, 17:09
Сообщение #16


****

Apprentice
Сообщений: 283
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8477
Пользователь №: 19.451
Возраст: 32



Цитата(apaul @ 8.8.2022, 12:38) *

Очень стало интересно. А то захотел прикрутить в дополнение с отчетам, еще и управление к скрипту, а оказалось что это решение у меня при отправке работает прекрасно, а вот с получением сообщений полная беда. Просто по
Код
telegram.gettelegrammessage(token, chat_id, new_message)
ничего не приходит (IMG:style_emoticons/default/sad.gif)

Скоро выложу
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.4.2024, 0:15
Designed by Nickostyle