token="......" --робот в telegram
chat_id="....." --ваш в telegram
curl="C:/Windows/System32/curl.exe --silent --output null "..'"'.."https://api.telegram.org/bot"..token.."/sendMessage?chat_id="..chat_id.."&text="
------------------------------
mes="привет!!" --сообщение
os.execute(curl..mes..'"'); --отправляем
Пользователь
Сообщений: Регистрация: 23.12.2023
20.07.2024 23:01:22
Жаль здесь нет реакций, поставил бы лайк за хорошую идею
Пользователь
Сообщений: Регистрация: 20.03.2023
21.07.2024 07:41:21
Аккуратно обрабатываем спецсимволы:
Код
function tgmsg(text)
local curl = 'curl.exe'
local token = '.....'
local chatid = '....'
text = string.gsub(text, '[^0-9a-zA-Z\x80-\xff._~-]', function(chr) return string.format("%%%02x", string.byte(chr)) end)
local h, e, c = io.popen(curl .. ' -X POST --data-raw text="' .. text .. '" https://api.telegram.org/bot' .. token .. '/sendMessage?chat_id=' .. chatid)
if h then
local a = h:read('a')
return a, h:close()
else
return false, e, c
end
end
Пользователь
Сообщений: Регистрация: 20.04.2016
23.07.2024 14:29:19
Люди добрые, а кто может объяснить более подробно, где взять эти значния? token="......" --робот в telegram chat_id="....." --ваш в telegram
Для тех, кто с ботам телеграмма не имел дела
Пользователь
Сообщений: Регистрация: 20.03.2023
24.07.2024 07:45:05
Открываете в телеграмм
Пользователь
Сообщений: Регистрация: 20.03.2023
24.07.2024 07:46:41
Пишите botFather /start потом /newbot придумываете имя, получаете токен
Пользователь
Сообщений: Регистрация: 20.03.2023
24.07.2024 07:56:54
Потом подключаетесь к своему боту, пишите ему что-нибудь, дергаете api (можно прямо в браузере открыть) и ищите там chat id.
Изменено: - 24.07.2024 14:18:04
Пользователь
Сообщений: Регистрация: 30.01.2015
24.07.2024 11:56:41
Цитата
paluke написал: Потом подключаетесь к своему боту, пишите ему что-нибудь, дергаете api (можно прямо в браузере открыть) и ищите там chat id.
function tgmsg (text)
local curl = 'curl.exe'
local token = '.....'
local chatid = '....'
text = string.gsub (text, '[^0-9a-zA-Z\x80-\xff._~-]' , function (chr) return string.format ( "%%%02x" , string.byte (chr)) end )
local h, e, c = io.popen (curl .. ' -X POST --data-raw text="' .. text .. '" https://api.telegram.org/bot' .. token .. '/sendMessage?chat_id=' .. chatid)
if h then
local a = h:read( 'a' )
return a, h:close()
else
return false , e, c
end
end
Код у вас не работает. Не выполняется io.popen, при этом ошибок нет. Если поменять на execute, то все работает
Я бы хотел иметь возможность в LUA видеть статус отправки сообщений в Телегу и если сообщения перестали уходить, то получить какой-то message, Версия с io.popen это позволяла бы сделать, как в приведённом выше примере, но он не работает :(. Ваш вариант отличный, но он позволит только постфактум узнать о проблемах. Но все равно, Вам огромное спасибо за идею в принципе! Это просто прекрасное решение почти всех моих запросов!
Я бы хотел иметь возможность в LUA видеть статус отправки сообщений в Телегу и если сообщения перестали уходить, то получить какой-то message, Версия с io.popen это позволяла бы сделать, как в приведённом выше примере, но он не работает :(. Ваш вариант отличный, но он позволит только постфактум узнать о проблемах. Но все равно, Вам огромное спасибо за идею в принципе! Это просто прекрасное решение почти всех моих запросов!
Отправьте по аналогии как я написал запрос /update и получите все сообщения. Можно запросить только последнее. Но как Вы собираетесь определить что сообщения перестали приходить ? ---------------- Возможно я не понял, но о каких проблемах Вы хотите узнать? О проблемах с bot в Telegram или о проблемах в QUIK или о проблемах с ПК или о проблемах со связью с биржей?
Я бы хотел иметь возможность в LUA видеть статус отправки сообщений в Телегу и если сообщения перестали уходить, то получить какой-то message, Версия с io.popen это позволяла бы сделать, как в приведённом выше примере, но он не работает :(. Ваш вариант отличный, но он позволит только постфактум узнать о проблемах. Но все равно, Вам огромное спасибо за идею в принципе! Это просто прекрасное решение почти всех моих запросов!
Не знаю, что у вас не так, у меня io.popen работает, и ответ от curl я получаю. Может, дело в версии curl
Я бы хотел иметь возможность в LUA видеть статус отправки сообщений в Телегу и если сообщения перестали уходить, то получить какой-то message, Версия с io.popen это позволяла бы сделать, как в приведённом выше примере, но он не работает :(. Ваш вариант отличный, но он позволит только постфактум узнать о проблемах. Но все равно, Вам огромное спасибо за идею в принципе! Это просто прекрасное решение почти всех моих запросов!
Не знаю, что у вас не так, у меня io.popen работает, и ответ от curl я получаю. Может, дело в версии curl
у меня io.popen вообще ничего не возвращает и команду не выполняет. Я пробовал просто dir отправить. У вас windows какой версии?
Я бы хотел иметь возможность в LUA видеть статус отправки сообщений в Телегу и если сообщения перестали уходить, то получить какой-то message, Версия с io.popen это позволяла бы сделать, как в приведённом выше примере, но он не работает :(. Ваш вариант отличный, но он позволит только постфактум узнать о проблемах. Но все равно, Вам огромное спасибо за идею в принципе! Это просто прекрасное решение почти всех моих запросов!
Отправьте по аналогии как я написал запрос /update и получите все сообщения. Можно запросить только последнее. Но как Вы собираетесь определить что сообщения перестали приходить ? ---------------- Возможно я не понял, но о каких проблемах Вы хотите узнать? О проблемах с bot в Telegram или о проблемах в QUIK или о проблемах с ПК или о проблемах со связью с биржей?
Я хочу в QUIK увидеть статус отправки сообщения в Telegram. И вовремя увидеть, что статус сделок перестал улетать в телеграмм. Чтобы было понятно, я делюсь сделками, которые совершаю руками в QUIK с коллегами и хочу вовремя увидеть, что они перестали их получать, если что-то отвалилось в телеге.
Я хочу в QUIK увидеть статус отправки сообщения в Telegram. И вовремя увидеть, что статус сделок перестал улетать в телеграмм. Чтобы было понятно, я делюсь сделками, которые совершаю руками в QUIK с коллегами и хочу вовремя увидеть, что они перестали их получать, если что-то отвалилось в телеге.
такой вариант устроит:
Код
token="......" --робот в telegram
chat_id="....." --ваш в telegram
local mes="hello"
local serv= "https://api.telegram.org/bot"..token
local pref= serv.."/sendMessage?chat_id="..chat_id.."&text="
local cur_="curl -s "..'"'..pref
local f=io.popen(cur_..mes); s=f:read('*all'); f:close(); print("s="..s);
Я бы хотел иметь возможность в LUA видеть статус отправки сообщений в Телегу и если сообщения перестали уходить, то получить какой-то message, Версия с io.popen это позволяла бы сделать, как в приведённом выше примере, но он не работает :(. Ваш вариант отличный, но он позволит только постфактум узнать о проблемах. Но все равно, Вам огромное спасибо за идею в принципе! Это просто прекрасное решение почти всех моих запросов!
Не знаю, что у вас не так, у меня io.popen работает, и ответ от curl я получаю. Может, дело в версии curl
у меня io.popen вообще ничего не возвращает и команду не выполняет. Я пробовал просто dir отправить. У вас windows какой версии?
У меня в win10 работает. И под wine в линуксе тоже работает. Просто dir работать не будет, надо "cmd /c dir" Можно попробовать добавить в начало "cmd /c 2>&1 " перед curl - получите вывод сообщений об ошибках. Ну или в файл ошибки отправлять "cmd /c 2>errorfile.txt "
Пользователь
Сообщений: Регистрация: 30.05.2016
01.08.2024 12:59:16
Интересная тема!
В ботах также возможно добавить кнопки (в том числе динамические) и управлять скриптом прямо из приложения. Однако, встает вопрос на сколько это все безопасно, как никак речь идет про деньги.
И еще интересно, какие уведомления вы используете в своих скриптах, например, сделки и так отображаются в приложении брокера и более информативны чем просто текст.
Пользователь
Сообщений: Регистрация: 02.02.2023
13.08.2024 23:54:43
Цитата
Станислав написал: И еще интересно, какие уведомления вы используете в своих скриптах, например, сделки и так отображаются в приложении брокера и более информативны чем просто текст.
Мой робот полностью сопровождает сделку и информирует о результатах, а со зверушкой веселее. Часто даже на буквы не смотрю, картинка все объясняет.
-------------------------------------------------------------------------------------------------------------
--------------------------------------отправка сообщений в telegram------------------------------------------
-------------------------------------------------------------------------------------------------------------
function telegram_msg(tmsg,chat)
if TELEGRAM_ON then
if tmsg~=nil and tmsg~="" and chat~=nil and chat~="" then
local hour = tonumber(os.date("%H"))
local tURL="https://api.telegram.org"
--local tmsg = AnsiToUtf8(tmsg)
local dis_not = (hour>=tHourStart and hour<=tHourEnd) and "false" or "true" -- отключение звука сообщения согласно настроек config файла
local str = string.format("curl -X GET \"%s/bot%s/sendChatAction?chat_id=%s&action=typing",tURL,tToken,chat) -- бот печатает
local msg = os.execute('start /MIN '..str)
sleep(1500) -- время набора текста ботом
local str = "curl -X GET \""..tURL.."/bot"..tToken.."/sendMessage?disable_notification="..dis_not.."\" -d \"&parse_mode=html&chat_id="..chat.."&text="..tmsg.."\""
local msg = os.execute('start /MIN '..str)
else
mes(string.format("%s - %s - Сообщение [%s] не отправлено в чат %s", ScriptName, sec_code,tostring(tmsg),tostring(chat)),3)
end
end
end
-------------------------------------------------------------------------------------------------------------
--------------------------------------отправка стикера в telegram--------------------------------------------
-------------------------------------------------------------------------------------------------------------
function telegram_stick(tstick,chat)
LastTelPost=Timer
if TELEGRAM_ON and STICK_ON then
if tstick~=nil and tstick~="" and chat~=nil and chat~="" then
local hour=tonumber(os.date("%H"))
local tURL="https://api.telegram.org"
local dis_not = (hour>=tHourStart and hour<=tHourEnd) and "false" or "true"
local str = string.format("curl -X GET \"%s/bot%s/sendSticker?disable_notification=%s&parse_mode=html&chat_id=%s&sticker=%s",tURL,tToken,dis_not,chat,tstick)
local msg = os.execute('start /MIN '..str)
else
mes(string.format("%s - %s - Стикер %s не отправлен в чат %s", ScriptName, sec_code,tostring(tstick),tostring(chat)),3)
end
end
end
Пользователь
Сообщений: Регистрация: 02.02.2023
14.08.2024 00:45:57
Вопрос только в том, как убрать мелькание командного окна.
Пользователь
Сообщений: Регистрация: 27.01.2017
14.08.2024 09:39:02
Цитата
VargoR написал: Вопрос только в том, как убрать мелькание командного окна.
Не использовать curl из командной строки, а написать библиотеку, клиента, реализующую обмен и передачу информации прямо через http запрос.
Пользователь
Сообщений: Регистрация: 30.01.2015
14.08.2024 10:29:16
Цитата
VargoR написал: Вопрос только в том, как убрать мелькание командного окна.
попробуйте так:
Код
local token=""
local chat_id=""
local serv= "https://api.telegram.org/bot"..token
local pref= serv.."/sendMessage?chat_id="..chat_id.."&text="
local cur1="curl -s "..'"'..pref
local mes="Привет"
local f=io.popen(cur1..mes); f:close();
Пользователь
Сообщений: Регистрация: 27.01.2017
14.08.2024 10:42:10
io.popen в окружении терминала все равно поднимает окно.
Пользователь
Сообщений: Регистрация: 30.01.2015
14.08.2024 12:07:40
Цитата
Nikolay написал: io.popen в окружении терминала все равно поднимает окно.
тогда придется использовать API C for Lua и написать такую функцию для отправки сообщений:
Код
static int shell(lua_State* L){ ShellExecuteA(0,"open", (char*)lua_tostring(L, 1),(char*)lua_tostring(L,2),0,0);return 0; }