WAN в Telegram
Начнем с простой задачи, необходимо узнать внешний WAN адрес. Была статья уже со скриптом (Отправка на email ip адрес wan), здесь мы упрощаем задачу.
Для решения задачи будем использовать PowerShell, и так берем строчку и получаем на выходе WAN адрес сети:
1 |
(curl flammlin.com/pi -UserAgent "curl").Content |
Теперь отправляем сообщение в Telegram пользователю, выглядит это вот так:
1 2 3 4 5 6 |
$wanip = (curl flammlin.com/pi -UserAgent "curl").Content $bot_token = "Токен бота" $URL = "https://api.telegram.org/bot$bot_token/sendMessage" $id = "id пользователя, которому отправляется сообщение" $message = "*WAN* ip Адрес: $wanip" Invoke-WebRequest -Method Post -Uri $URL -ContentType "application/json;charset=utf-8" -Body (ConvertTo-Json -Compress -InputObject @{chat_id=$id; text=$message}) |
Все красиво, все работает, задачу можно закрывать, НО кодировка кириллицы приходит в ????
Переписываем код, что бы сообщение приходило в Telegram в нормальной кодировке, а так же скрипт умел понимать форматированный текст:
1 2 3 4 5 6 7 8 9 10 |
$wanip = (curl flammlin.com/pi -UserAgent "curl").Content $bot_token = "Токен бота" $URL = "https://api.telegram.org/bot$bot_token/sendMessage?chat_id=$id&text=$message" $id = "id пользователя, которому отправляется сообщение" $message = "*WAN* ip Адрес: $wanip" $payload = @{ "parse_mode" = "Markdown"; "disable_web_page_preview" = "True"; } $request = Invoke-WebRequest -Uri $URL -Method Post -ContentType "application/json;charset=utf-8" -Body (ConvertTo-Json -Compress -InputObject $payload) |
Думаю найти применение для данного скрипта можно найти всегда…
2 комментария
Максим
У вас ошибки в коде: переменные заданы уже после их использования.
Ниже код нормально отсылает кириллицу через бота
$bot_token = «Токен бота»
$id = «id пользователя, которому отправляется сообщение»
$message = «*WAN* ip Адрес: $wanip»
$URL = «https://api.telegram.org/bot$bot_token/sendMessage?chat_id=$id&text=$message»
function send_2bot_text()
{
$apiUrl = $URL
$client = new-object System.Net.WebClient
$client.Headers.Add(«Content-Type», «application/x-www-form-urlencoded»)
$client.Encoding = [System.Text.Encoding]::UTF8
$quote = $client.UploadString($URL, ‘method=getQuote&format=json’ )
}
send_2bot_text
kanitelka
Максим, но код рабочий, даже после, как вы пишите.