Что нового

отправить сообщение/уведомление в Telegram Bot при выполнении условия

bonik2020

Новичок
Сообщения
11
Репутация
1
Здравствуйте, есть ли готовое решение отправить фиксированное сообщение на Telegram, когда соблюдены определенные условия?
Имеется созданный TelegramBot. Может у кого есть готовый скрипт, куда можно подставить token и chat_id, и сообщение типа "123", чтоб оно высылалось, когда соблюдены заданные мной условия в скрипте.
То есть, функция уведомления в Telegram, по сути.
Перерыл кучу веток форумов, есть некие решения, типа : Telegram Bot UDF и тут
мне не хватает навыков разобраться, если есть готовый скрипт, который можно вставить в мой скрипт, чтоб он высылал уведомления!
Спасибо!
 

vivernet

Новичок
Сообщения
26
Репутация
3
тоже пробую найти но не выходит, знаю как это сделать в киборе например
Код:
string token="11ххххх:ххххххххххххххххххххJK4";
string message="Text";
string chat_id="12345678";

string s;

sendgetweb(#s, "Bot", "POST", "https:/"+"/api.telegram.org",
"bot"+token+"/"+
"sendMessage?chat_id="+chat_id+"&"+
"text="+message);

но как тут никак не разобраться
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
тоже пробую найти но не выходит, знаю как это сделать в киборе например

Код:
$sBotKey = 'bot****************************************'    ; Ваш api ключ
$nChatId = 123456789                                        ; Id получателя
$sText = _URIEncode('Приветик')                                ; Текст сообщения, не больше 4000 знаков

ConsoleWrite(InetRead('https://api.telegram.org/' & $sBotKey & '/sendMessage?chat_id=' & $nChatId & '&text=' & $sText, 0))

Func _URIEncode($sData)                                        ; https://www.autoitscript.com/forum/topic/95850-url-encoding/
    ; [email protected]
    Local $aData = StringSplit(BinaryToString(StringToBinary($sData,4),1),"")
    Local $nChar
    $sData=""
    For $i = 1 To $aData[0]
        $nChar = Asc($aData[$i])
        Switch $nChar
            Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
                $sData &= $aData[$i]
            Case 32
                $sData &= "+"
            Case Else
                $sData &= "%" & Hex($nChar,2)
        EndSwitch
    Next
    Return $sData
EndFunc
 

vivernet

Новичок
Сообщения
26
Репутация
3
Код:
$sBotKey = 'bot****************************************'    ; Ваш api ключ
$nChatId = 123456789                                        ; Id получателя
$sText = _URIEncode('Приветик')                                ; Текст сообщения, не больше 4000 знаков

ConsoleWrite(InetRead('https://api.telegram.org/' & $sBotKey & '/sendMessage?chat_id=' & $nChatId & '&text=' & $sText, 0))

Func _URIEncode($sData)                                        ; https://www.autoitscript.com/forum/topic/95850-url-encoding/
    ; [email protected]
    Local $aData = StringSplit(BinaryToString(StringToBinary($sData,4),1),"")
    Local $nChar
    $sData=""
    For $i = 1 To $aData[0]
        $nChar = Asc($aData[$i])
        Switch $nChar
            Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
                $sData &= $aData[$i]
            Case 32
                $sData &= "+"
            Case Else
                $sData &= "%" & Hex($nChar,2)
        EndSwitch
    Next
    Return $sData
EndFunc

Супер, спасибо большое!
 
Автор
B

bonik2020

Новичок
Сообщения
11
Репутация
1
Код:
$sBotKey = 'bot****************************************'    ; Ваш api ключ
$nChatId = 123456789                                        ; Id получателя
$sText = _URIEncode('Приветик')                                ; Текст сообщения, не больше 4000 знаков

ConsoleWrite(InetRead('https://api.telegram.org/' & $sBotKey & '/sendMessage?chat_id=' & $nChatId & '&text=' & $sText, 0))

Func _URIEncode($sData)                                        ; https://www.autoitscript.com/forum/topic/95850-url-encoding/
    ; [email protected]
    Local $aData = StringSplit(BinaryToString(StringToBinary($sData,4),1),"")
    Local $nChar
    $sData=""
    For $i = 1 To $aData[0]
        $nChar = Asc($aData[$i])
        Switch $nChar
            Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
                $sData &= $aData[$i]
            Case 32
                $sData &= "+"
            Case Else
                $sData &= "%" & Hex($nChar,2)
        EndSwitch
    Next
    Return $sData
EndFunc
Супер, спасибо большое!
Привет, спасибо, большое, за ответ,

подскажите, пожалуйста, почему не циклится проверка условий для отправки текста по API, код типа:
Код:
Func _URIEncode($sData)                                        ; https://www.autoitscript.com/forum/topic/95850-url-encoding/
    ; [email protected]
    Local $aData = StringSplit(BinaryToString(StringToBinary($sData,4),1),"")
    Local $nChar
    $sData=""
    For $i = 1 To $aData[0]
        $nChar = Asc($aData[$i])
        Switch $nChar
            Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
                $sData &= $aData[$i]
            Case 32
                $sData &= "+"
            Case Else
                $sData &= "%" & Hex($nChar,2)
        EndSwitch
    Next
    Return $sData
 EndFunc
While 1
If (IsArray($Variable) = True) OR (IsArray($Variable2) = True) Then

ConsoleWrite(InetRead('https://api.telegram.org/' & $sBotKey & '/sendMessage?chat_id=' & $nChatId & '&text=' & _URIEncode('Приветики'), 0))

SLeep(1000)
Else
SLeep(100)
EndIf
Wend


мне, хотелось бы, бесконечную проверку условий, и, когда оно соблюдается-отправляется текст, когда не соблюдается Sleep....
Но, по факту 1 раз отправляется текст, при первичном соблюдении условия, а дальше
любые другие функции выполняются, кроме ConsoleWrite>>Telegram указанной выше, т.е. любая функция ConsoleWrite выполняется 1 раз и только при соблюдении условия при первичном проходе, при вторичном While... уже не срабатывает
 
Последнее редактирование:

lapin9126

Новичок
Сообщения
35
Репутация
1
Тоже интересна эта тема. Если с "костылями", то можно скомпилировать скрипт и запускать exe файл. Но это как-то не очень.
Код:
$MyProgramm = @ScriptDir&'\send_telegram.exe'  ; здесь путь и имя скомпилированного скрипта
While 1
     RunWait($MyProgramm)
      Sleep (5000)  ; задержка
WEnd
 
Автор
B

bonik2020

Новичок
Сообщения
11
Репутация
1
Тоже интересна эта тема. Если с "костылями", то можно скомпилировать скрипт и запускать exe файл. Но это как-то не очень.
Код:
$MyProgramm = @ScriptDir&'\send_telegram.exe'  ; здесь путь и имя скомпилированного скрипта
While 1
     RunWait($MyProgramm)
      Sleep (5000)  ; задержка
WEnd
спасибо, за ответ хотя-бы с "костылями")
видимо, нужно найти причину, по которой при наличии ConsoleWrite > в Телеграм API подвисают дальнейшие сообщения, кроме первичного цикла
 
Последнее редактирование:

ghm

Новичок
Сообщения
1
Репутация
0
спасибо, за ответ хотя-бы с "костылями")
видимо, нужно найти причину, по которой при наличии ConsoleWrite > в Телеграм API подвисают дальнейшие сообщения, кроме первичного цикла
Тоже интересна эта тема. Если с "костылями", то можно скомпилировать скрипт и запускать exe файл. Но это как-то не очень.
Код:
$MyProgramm = @ScriptDir&'\send_telegram.exe'  ; здесь путь и имя скомпилированного скрипта
While 1
     RunWait($MyProgramm)
      Sleep (5000)  ; задержка
WEnd

если всё ещё актуально, то можно и без костылей: в качестве параметра для InetRead надо поставить 1, а не 0. тогда скрипт реально дёргает эту ссылку каждый раз, а не берёт ответ из кэша. и не знаю зачем тут ConsoleWrite, думал, что оно придаёт некую асинхронность и без него скрипт будет спотыкаться на InetRead при отсутствии интернета, но вроде бы не спотыкается, в течение 2 недель скрипт несколько сотен раз отработал без ошибок, ни единого перезапуска не понадобилось.
оставил так:
Код:
InetRead('https://api.telegram.org/' & $sBotKey & '/sendMessage?chat_id=' & $nChatId & '&text=' & $sText, 1)
 
Последнее редактирование:
Верх