Ka laʻana no ka pahu telegram maʻalahi no nā keiki kula ma ka papa 7-9 me ka Powershell

I ke kamaʻilio ʻana me kekahi hoaaloha, ua ʻike koke wau ʻaʻole aʻo ʻia nā keiki ma ka papa 8-10 ma kā lākou kula i ka papahana. Word, Excel a me nā mea a pau. ʻAʻohe logo, ʻaʻole ʻo Pascal, ʻaʻole hoʻi VBA no Excel.

Pīhoihoi loa au, wehe au i ka Pūnaewele a hoʻomaka e heluhelu -
ʻO kekahi o nā hana o kahi kula kūikawā ʻo ia ka hoʻolaha ʻana i ka hoʻonaʻauao o kahi hanauna hou e kū ana i nā kūlana o ka ʻike ʻike i kona pae o ka hoʻomohala ʻana a me ke ʻano o ka nohona.
E ʻae kēia papa i nā haumāna e hoʻoikaika i ka hoʻomaʻamaʻa ʻana i ko lākou ʻike i nā kūkulu kumu o ka ʻōlelo papahana Pascal. (mai ka papahana o kekahi gymnasium no 2017)

I ka hopena, ua hoʻoholo wau e hoʻolimalima i ʻelua mau hola a kiʻi i kahi laʻana o "pehea e hana ai i kahi bot maʻalahi no nā keiki kula."

Ma lalo o ka ʻoki ʻana pehea e kākau ai i kahi bot maʻalahi ma Powershell a hana ia me ka ʻole o ka webhook, nā IP keʻokeʻo, nā kikowaena i hoʻolaʻa ʻia, hoʻonoho ʻia nā mīkini virtual i ke ao, a pēlā aku - ma kahi PC home maʻamau me Windows maʻamau.

TLDR: ʻO kekahi ʻatikala ʻē aʻe me nā hewa grammatical a me ka ʻoiaʻiʻo, ʻaʻohe mea heluhelu, ʻaʻohe ʻakaʻaka, ʻaʻohe kiʻi.

ʻAʻohe mea hou i loko o ka ʻatikala, kokoke i nā mea a pau i kākau mua ʻia ma Habré, no ka laʻana ma nā ʻatikala 'Ōlelo Aʻo: Pehea e hana ai i nā bots ma Telegram и Telegram bot no ka luna hoʻoponopono.
Eia kekahi, ʻo ka ʻatikala ua hoʻopau ʻia i ʻole e kuhikuhi i nā palapala hoʻonaʻauao i kēlā me kēia manawa. ʻAʻohe mea e pili ana i ka Gang 4, PowerShell Deep Dives a i ʻole, ʻo ka 5 Pillars o ka AWS Well-Architected Framework i ka kikokikona.

Ma kahi o ka ʻōlelo mua, hiki iā ʻoe ke hoʻopololei

E ʻoluʻolu e leleI ka makahiki 2006, ua hoʻokuʻu ʻo Microsoft i ka PowerShell 1.0 no ka Windows XP, Vista, a me Server 2003. Ma kekahi mau ʻano, ua hoʻololi ʻo ia i nā mea like me cmdbat scripts, vb scripts, Windows Script Host a me JScript.

ʻOiai i kēia manawa, hiki ke noʻonoʻo ʻia ʻo PowerShell ma hope o nā koho Logo, ma kahi o ka Delphi i hoʻohana mau ʻia (a i ʻole kekahi mea kahiko), ʻoiai ke alo o nā puka lou, nā papa, nā hana, nā kelepona MS GUI, Hoʻohui ʻia ʻo Git a no laila, ma luna o.

Hoʻohana pinepine ʻia ka Powershell; hiki iā ʻoe ke hālāwai me ia ma ke ʻano o PowerShell Core, VMware vSphere PowerCLI, Azure PowerShell, MS Exchange, Desired State Configuration, Loaʻa Pūnaewele PowerShell a he ʻumi a ʻoi aʻe paha nā papahana a me nā hana i hoʻohana ʻole ʻia. Loaʻa paha iā ia ka makani lua me ka hoʻokuʻu ʻana WSL2, akā ʻaʻole pololei.

He ʻekolu mau pono nui ʻo Powershell:

  1. He mea maʻalahi, he nui nā palapala a me nā hiʻohiʻona e pili ana iā ia, a ma ka ʻōlelo Lūkini, no ka laʻana, kahi ʻatikala e pili ana iā Foreach - mai ka puke. PowerShell i ka hohonu - e pili ana i ka ʻokoʻa () a me {}
  2. Hele ʻo ia me ka luna hoʻoponopono ʻOI, komo pū me Windows. Aia kekahi ʻano debugger ma laila.
  3. He maʻalahi ke kelepona mai ia mea nā ʻāpana no ke kūkulu ʻana i kahi kikowaena kiʻi.

0. Hoomakaukau.

E pono kāua:

  • Windows PC (Aia iaʻu Windows 10)
  • Ma ka liʻiliʻi o kekahi ʻano o ka Internet (ma o NAT no ka laʻana)
  • No ka poʻe i kaupalena ʻia i ke kelepona - hoʻokomo a hoʻonohonoho i ka freegate i ka polokalamu kele pūnaewele, i kekahi mau hihia paʻakikī, me Symple DNS Crypt
  • Loaʻa i kahi mea kūʻai telegram e hana nei ma kāu kelepona
  • ʻO ka hoʻomaopopo ʻana i nā kumu kumu - he aha ka loli, array, loop.

Wehe a heluhelu ʻatikala - 'Ōlelo Aʻo: Pehea e hana ai i nā bots ma Telegram и Telegram bot no ka luna hoʻoponopono

1. E hana kakou i ka bot hoao hou.

No ka mea ua ʻike mua nā mea a pau i kēia, a ua hana mua ʻia, hiki iā ʻoe ke hoʻokuʻuE like me ka mea i ʻōlelo ʻia ma ka ʻatikala ma luna - ʻO ka mea mua, he bot no Telegram - He noi ia e holo ana ma kou ʻaoʻao a e noi ana i ka Telegram Bot API. Eia kekahi, maopopo ka API - komo ka bot i kahi URL kikoʻī me nā ʻāpana, a pane ʻo Telegram me kahi mea JSON.

Nā pilikia pili: inā ma kekahi ala ʻike ʻole ʻoe e lawe i kekahi code mai kahi mea JSON a hoʻouna ʻia no ka hoʻokō (ʻaʻole ma ke kumu), e hoʻokō ʻia ke code no ʻoe.

Ua wehewehe ʻia ke kaʻina hana hana i ʻelua mau ʻatikala ma luna, akā ke haʻi hou nei au: ma kahi telegrama mākou e wehe ai i nā pilina, e ʻimi iā @botfather, e haʻi iā ia / newbot, e hana i kahi bot Botfortest12344321, e kapa iā ia ʻo Mynext1234bot, a loaʻa i kahi leka me kahi kī kūikawā o ka puka 1234544311:AbcDefNNNNNNNNNNNNNNNN

E mālama i ke kī a mai hāʻawi aku!

A laila hiki iā ʻoe ke hoʻonohonoho i ka bot, no ka laʻana, pāpā i ka hoʻohui ʻana iā ia i nā hui, akā i nā hana mua ʻaʻole pono kēia.

E noi iā BotFather no "/mybot" a hoʻoponopono i nā hoʻonohonoho inā ʻaʻole mākou makemake i kekahi mea.

E wehe hou i nā mea pili, e ʻimi iā @Botfortest12344321 ma laila (pono e hoʻomaka i ka huli ʻana me @), kaomi "hoʻomaka" a kākau i ka bot "/Glory to the robots." Pono ka hōʻailona /, ʻaʻole pono nā huaʻōlelo.
ʻO ka bot, ʻoiaʻiʻo, ʻaʻole e pane i kekahi mea.

E nānā kāua ua hana ʻia ka bot a wehe iā ia.

api.telegram.org/bot1234544311:AbcDefNNNNNNNNNNNNNN/getMe
kahi 1234544311:AbcDefNNNNNNNNNNNNNN ke kī i loaʻa mua,
a loaʻa kahi laina like
{"ok":true,"hopena":{""}}

Loaʻa iā mākou ka huaʻōlelo huna mua (token). I kēia manawa pono mākou e ʻike i ka helu huna lua - ka ID o ke kamaʻilio me ka bot. ʻO kēlā me kēia kamaʻilio, hui, a me nā mea ʻē aʻe he kanaka a loaʻa iā ia kāna helu ponoʻī (i kekahi manawa me ka minus - no nā hui wehe). I mea e ʻike ai i kēia helu, pono mākou e noi i loko o ka polokalamu kele pūnaewele (ʻoiaʻiʻo, ʻaʻole pono i ka polokalamu kele pūnaewele, akā no ka hoʻomaopopo maikaʻi ʻana hiki iā ʻoe ke hoʻomaka me ia) ka helu wahi (kahi 1234544311:NNNNNNNNNN kou hōʻailona.

https://api.telegram.org/bot1234544311:NNNNNNNNN/getUpdates

a loaʻa kahi pane e like me

{"ok":true,"result":[{"update_id":...,... eʻauʻau kai":{"id":123456789

Pono mākou i chat_id.

E nānā i hiki iā mākou ke kākau i ke kamaʻilio me ka lima: e kāhea i ka helu wahi mai ka polokalamu kele pūnaewele

https://api.telegram.org/botваштокен/sendMessage?chat_id=123456789&text="Life is directed motion"

Inā loaʻa iā ʻoe kahi leka mai kahi bot i kāu kamaʻilio, ʻae, neʻe ʻoe i ka pae aʻe.

Ma kēia ala (ma o ka polokalamu kele pūnaewele) hiki iā ʻoe ke nānā mau inā he pilikia me ka hanauna o ka loulou, a i ʻole kahi mea i hūnā ʻia ma kahi a ʻaʻole hana.

He aha kāu e ʻike ai ma mua o ka hoʻomau ʻana i ka heluhelu

Loaʻa i Telegram nā ʻano kamaʻilio pūʻulu (wehe, pani ʻia). No kēia mau kamaʻilio ʻana, ʻokoʻa kekahi o nā hana (e like me ka id), i kekahi manawa ke kumu i kekahi mau pilikia.

E noʻonoʻo kākou ʻo ia ka hopena o 2019, a ʻo ka meʻe o ko mākou manawa, ʻo ka Man-Orchestra kaulana (luna hoʻomalu, loio, loea palekana ʻike, programmer a me MVP maʻamau) Evgeniy V. hoʻokaʻawale i ka $i variable mai kahi array, ua haku i nā puka lou, e nānā i nā makahiki e hiki mai ana e haku iā Chocolatey, a laila Ka hana like me PowerShell и No kēlā me kēia mea-mea like e hiki mai ana.

1. Noʻonoʻo mākou i ka hana a kā mākou bot

ʻAʻohe oʻu manaʻo, pono wau e noʻonoʻo. Ua kākau mua wau i ka bot-notebook. ʻAʻole wau i makemake e hana i kahi bot "e hoʻouna i kahi mea ma kahi." No ka hoʻopili ʻana iā Azure pono ʻoe i kahi kāleka hōʻaiʻē, akā mai hea mai ka haumāna? Pono e hoʻomaopopo ʻia ʻaʻole maikaʻi loa nā mea āpau: hāʻawi nā ao nui i kekahi ʻano o ka manawa hoʻāʻo no ka manuahi (akā, pono ʻoe i kahi helu kāleka hōʻaiʻē - a me he mea lā e hoʻokaʻawale ʻia ke kālā mai ia mea. ʻAʻole wau e hoʻomanaʻo inā ua hoʻihoʻi ʻia ma hope.)

Me ka ʻole o AI ML ʻaʻole hoihoi loa ka hana ʻana i kahi mea ulana bot-poor-poet-weaver.

Ua hoʻoholo wau e hana i kahi bot e hoʻomanaʻo iaʻu (a ʻaʻole wau) i nā huaʻōlelo Pelekane mai ka puke wehewehe.
I mea e pale ʻole ai i ka ʻikepili, e mālama ʻia ka puke wehewehe ʻōlelo i loko o kahi faila kikokikona a hōʻano hou ʻia me ka lima.
I kēia hihia, ʻo ka hana ke hōʻike i nā kumu o ka hana, a ʻaʻole e hana i kahi huahana hapa.

2. E ho'āʻo ana i ka mea a pehea no ka manawa mua

E hana kākou i ka waihona C:poshtranslate
ʻO ka mua, e ʻike kākou i ke ʻano o ka powershell i loaʻa iā mākou, e hoʻomaka kākou i ka ISE ma o ka hoʻomaka ʻana
powershell ise
a i ʻole e ʻimi iā Powershell ISE ma nā polokalamu i hoʻokomo ʻia.
Ma hope o ka hoʻomaka ʻana, e wehe ʻia ka "ʻano hoʻoponopono" maʻamau; inā ʻaʻohe kahua kikokikona, a laila hiki iā ʻoe ke kaomi mau i ka "File - hana hou".

E nānā kākou i ka mana o ka powershell - e kākau ma ke kahua kikokikona:

get-host 

a kaomi i ka F5.

Hāʻawi ʻo Powershell e mālama - "E mālama ʻia ka palapala āu e holo ai.", ʻae mākou, a mālama i ka faila mai powershell me ka inoa ma C: poshtranslate myfirstbotBT100.

Ma hope o ka hoʻomaka ʻana, ma ka puka aniani haʻahaʻa e loaʻa iā mākou kahi papa ʻikepili:

Name             : Windows PowerShell ISE Host
Version          : 5.1.(и так далее)

Loaʻa iaʻu kahi mea 5.1, ua lawa kēlā. Inā he kahiko kāu Windows 7/8 a laila ʻaʻohe mea nui - ʻoiai pono e hoʻonui ʻia ʻo PowerShell i ka mana 5 - e.g. nā kuhikuhi.

Kākau i ka lā kiʻi ma ka laina kauoha ma lalo, e kaomi iā Enter, e nānā i ka manawa, e hele i ka waihona kumu me ke kauoha
cd
a hoʻomaʻemaʻe i ka pale me ke kauoha cls (ʻaʻole, ʻaʻole pono ʻoe e hoʻohana i ka rm)

I kēia manawa e nānā kāua i ka hana a pehea - ʻaʻole mākou e kākau i ke code, akā ʻelua laina, a hoʻāʻo e hoʻomaopopo i kā lākou hana. E ʻōlelo kākou i ka laina me ka loaʻa-host me ka hōʻailona # a hoʻohui iki.

# Пример шаблона бота 
# get-host
<# это пример многострочного комментария #>
$TimeNow = Get-Date
$TimeNow

(ʻO ka mea hoihoi, aia ma ka papa inoa hoʻoheheʻe code formatting ma Habré he ʻelua mau koho - akā ʻaʻole ʻo Powershell. Aia ʻo Dos. Aia ʻo Perl.)

A e holo kāua i ke code ma ke kaomi ʻana iā F5 a i ʻole ">" mai ka GUI.

Loaʻa iā mākou ka hopena aʻe:

Saturday, December 8, 2019 21:00:50 PM (или что-то типа)

I kēia manawa, e nānā kākou i kēia mau laina ʻelua a me kekahi mau mea hoihoi i ʻole e hoʻi hou i kēia i ka wā e hiki mai ana.

ʻAʻole like me Pascal (a ʻaʻole wale nō), hoʻāʻo ʻo PowerShell ponoʻī e hoʻoholo i ke ʻano o ka hāʻawi ʻana i kahi loli; kākau ʻia nā kikoʻī hou aku e pili ana i kēia ma ka ʻatikala. Papahana hoʻonaʻauao ma ke kākau ʻana i nā ʻōlelo papahana
No laila, ma ka hana ʻana i kahi ʻano $TimeNow a hāʻawi iā ia i ka waiwai o ka lā a me ka manawa o kēia manawa (Get-Date), ʻaʻole pono mākou e hopohopo nui i ke ʻano o ka ʻikepili e loaʻa ai ma laila.

ʻOiaʻiʻo, e ʻeha paha kēia naʻaupō ma hope, akā no ka hope. Aia ma lalo o ka kikokikona he laʻana.
E ʻike kākou i ka mea i loaʻa. E hoʻokō kākou (ma ka laina kauoha)

$TimeNow | Get-member

a loaʻa kahi ʻaoʻao o nā kikokikona hiki ʻole ke hoʻomaopopo ʻia

Ka laʻana o ka helu kikokikona hiki ʻole ke hoʻomaopopo ʻia 1

PS C:> $TimeNow | Get-member
   TypeName: System.DateTime
Name                 MemberType     Definition                                                                                                                                       
----                 ----------     ----------                                                                                                                                       
Add                  <b>Method         </b>datetime Add(timespan value)  
..
DisplayHint          NoteProperty   DisplayHintType DisplayHint=DateTime                                                                                                             
Date                 <b>Property       </b>datetime Date {get;}                                                                                                                             
Year                 Property       int Year {get;}   
..                                                                                                                               
DateTime             ScriptProperty System.Object DateTime {get=if ((& { Set-StrictMode -Version 1; $this.DisplayHint }) -ieq  "Date")...                                         

E like me kāu e ʻike ai, ua hana ʻia kahi ʻano ʻano TypeName: System.DateTime me kahi hui o nā ʻano hana (ma ke ʻano o ka mea hiki iā mākou ke hana me kēia mea hoʻololi) a me nā waiwai.

E kāhea kāua $TimeNow.DayOfYear - loaʻa iā mākou ka helu o ka lā o ka makahiki.
E kāhea kāua $TimeNow.DayOfYear | Get-Member - loaʻa iā mākou TypeName: System.Int32 a me kahi hui o nā ʻano hana.
E kāhea kāua $TimeNow.ToUniversalTime() - a loaʻa ka manawa ma UTC

Debugger

I kekahi manawa he mea pono e hoʻokō i kahi papahana a hiki i kahi laina a ʻike i ke kūlana o ka papahana i kēlā manawa. No kēia kumu, loaʻa iā ISE kahi hana Debug - hoʻololi i ka wahi hoʻomaha
E kau i kahi haʻi ma waena, e holo i kēia mau laina ʻelua a ʻike i ke ʻano o ka haki.

3. Hoʻomaopopo i ka pilina me ka Telegram bot

ʻOiaʻiʻo, ʻoi aku ka nui o nā palapala i kākau ʻia e pili ana i ka launa pū ʻana me ka bot, me nā getpush āpau a pēlā aku, akā hiki ke noʻonoʻo ʻia ka hoʻopuka ʻana o ke kumumanaʻo.

I kā mākou hihia, pono:

  • E aʻo e hoʻouna i kekahi mea ma ka leka
  • E aʻo e kiʻi i kekahi mea mai ka leka

3.1 E aʻo e hoʻouna i kekahi mea ma ka leka a loaʻa mai ia mea

He code liʻiliʻi - ʻāpana 3

Write-output "This is part 3"
$MyToken = "1234544311:AbcDefNNNNNNNNNNNNN"
$MyChatID = "123456789"
$MyProxy = "http://1.2.3.4:5678" 

$TimeNow = Get-Date
$TimeNow.ToUniversalTime()
$ScriptDir = Split-Path $script:MyInvocation.MyCommand.Path
$BotVersion = "BT102"

$MyText01 = "Life is directed motion - " + $TimeNow

$URL4SEND = "https://api.telegram.org/bot$MyToken/sendMessage?chat_id=$MyChatID&text=$MyText01"

Invoke-WebRequest -Uri $URL4SEND

a ma ka Russian Federation i kēia manawa loaʻa iā mākou ka hewa ʻAʻole hiki ke hoʻopili i ka kikowaena mamao.

A i ʻole ʻaʻole loaʻa iā mākou - pili i ka mea hoʻokele telecom a inā i hoʻonohonoho ʻia ka mea koho a hana
ʻAe, ʻo ka mea i koe e hoʻohui i kahi proxy. E ʻoluʻolu e hoʻomaopopo i ka hoʻohana ʻana i kahi proxy unencrypted a maʻamau hoʻopunipuni he mea weliweli loa ia no kou olakino.

ʻAʻole paʻakikī loa ka hana o ka ʻimi ʻana i kahi mea koho hana - hana ka hapa nui o nā mea hoʻolaha http i paʻi ʻia. Manaʻo wau ua hana ka lima iaʻu.

Syntax me ka hoʻohana proxy:

Invoke-WebRequest -Uri $URL4SEND -Proxy $MyProxy

Inā loaʻa iā ʻoe kahi leka i kāu kamaʻilio me kahi bot, a laila maikaʻi nā mea āpau, hiki iā ʻoe ke neʻe. Inā ʻaʻole, e hoʻomau i ka debugging.

Hiki iā ʻoe ke ʻike i ke ʻano o kāu string $URL4SEND a hoʻāʻo e noi iā ia ma ka polokalamu kele pūnaewele, e like me kēia:

$URL4SEND2 = '"'+$URL4SEND+'"'
start chrome $URL4SEND2 

3.2. Ua aʻo mākou pehea e kākau ai i "kekahi mea" ma ke kamaʻilio ʻana, i kēia manawa e hoʻāʻo mākou e heluhelu

E hoʻohui i 4 mau laina hou a ʻike i ka mea i loko ma o | loaʻa-lālā

$URLGET = "https://api.telegram.org/bot$MyToken/getUpdates"
$MyMessageGet = Invoke-WebRequest -Uri $URLGET -Method Get -Proxy $MyProxy
Write-Host "Get-Member"
$MyMessageGet | Get-Member

Hāʻawi ʻia ka mea hoihoi loa iā mākou

Content           Property   string Content {get;}  
ParsedHtml        Property   mshtml.IHTMLDocument2 ParsedHtml {get;}                                    
RawContent        Property   string RawContent {get;set;}

E ʻike kākou i ka mea i loko o lākou:

Write-Host "ParsedHtml"
$MyMessageGet.ParsedHtml # тут интересное
Write-Host "RawContent"
$MyMessageGet.RawContent # и тут интересное, но еще к тому же и читаемое. 
Write-Host "Content"
$MyMessageGet.Content

Inā hana nā mea a pau iā ʻoe, e loaʻa iā ʻoe kahi laina lōʻihi e like me:

{"ok":true,"result":[{"update_id":12345678,
"message":{"message_id":3,"from":{"id"

ʻO ka mea pōmaikaʻi, i ka ʻatikala i hoʻopuka mua ʻia ʻo Telegram bot no ka luna hoʻonohonoho ʻōnaehana i kēia laina (ʻae, e like me $MyMessageGet.RawContent | loaʻa ka lālā ʻo System.String), ua wehe ʻia.

4. E hana i ka mea i loaʻa iā ʻoe (ua ʻike mākou pehea e hoʻouna ai i kekahi mea)

E like me ka mea i kākau mua ʻia maanei, aia nā mea e pono ai ma ka ʻike. E nānā pono kākou.

ʻO ka mea mua, e kākau mākou i ʻelua mau huaʻōlelo hou i ka bot mai ke kikowaena pūnaewele a i ʻole mai ke kelepona

/message1
/message2
/message3

a e nānā ma o ka polokalamu kele pūnaewele i ka helu wahi i hoʻokumu ʻia ma ka helu $URLGET.

E ʻike mākou i kekahi mea e like me:

{"ok":true,"result":[{"update_id":NNNNNNN,
"message":{"message_id":10, .. "text":"/message1"
"message":{"message_id":11, .. "text":"/message2 
"message":{"message_id":12, .. "text":"/message3 

He aha ia? ʻO kekahi mea paʻakikī mai nā ʻāpana o nā mea i loaʻa kahi ʻike memo hope-to-end, ʻike kamaʻilio, hoʻouna ʻike a me nā ʻike he nui.

Eia naʻe, ʻaʻole pono mākou e noʻonoʻo "he aha ke ʻano o kēia mea" - ua hana mua ʻia kahi hapa o ka hana no mākou. E ʻike kākou i ka mea i loko:

Heluhelu i nā memo i loaʻa a i ʻole ʻāpana 4

Write-Host "This is part 4" <# конечно эта строка нам не нужна в итоговом тексте, но по ней удобно искать. #> 

$Content4Pars01 = ConvertFrom-Json $MyMessageGet.Content
$Content4Pars01 | Get-Member
$Content4Pars01.result
$Content4Pars01.result[0]
$Content4Pars01.result[0] | Get-Member
$Content4Pars01.result[0].update_id
$Content4Pars01.result[0].message
$Content4Pars01.result[0].message.text
$Content4Pars01.result[1].message.text
$Content4Pars01.result[2].message.text

5. He aha kā mākou e hana ai i kēia manawa?

E mālama kāua i ka faila ma lalo o ka inoa myfirstbotBT105 a i ʻole nā ​​mea āu e makemake ai, e hoʻololi i ke poʻo inoa a haʻi i nā code āpau i kākau ʻia ma o

<#start comment 105 end comment 105#>

I kēia manawa pono mākou e hoʻoholo i kahi e loaʻa ai ka puke wehewehe'ōlelo (maikaʻi, ma hea - ma ka disk i kahi faila) a me kona ʻano.

ʻOiaʻiʻo, hiki iā ʻoe ke kākau i kahi puke wehewehe ʻōlelo nui ma ka kikokikona o ka palapala, akā aia kēia ma ka ʻaoʻao.
No laila e ʻike kākou i ka mana e hiki ke hana me ka maʻamau.
Ma keʻano laulā, ʻaʻole ia e mālama i ka faila e hana ai, ʻaʻole ia he mea nui iā mākou.
He koho mākou: txt (hiki iā ʻoe, akā no ke aha), csv, xml.
Hiki iā mākou ke nānā i nā mea a pau? E ʻike kākou i nā mea a pau.
E hana kākou i papa MyVocabClassExample1 a me $MyVocabExample1
ʻIke au ua kākau ʻia ka papa me ka ʻole o $

kekahi code #5

write-host "This is part 5"
class MyVocabClassExample1 {
    [string]$Original  # слово
    [string]$Transcript
    [string]$Translate
    [string]$Example
    [int]$VocWordID # очень интересный момент. Использование int с его ограничениями может порой приводить к диким последствиям, для примера - недавний случай с SSD HPE. Изначально я не стал добавлять этот элемент, потом все же дописал и закомментировал.
    }

$MyVocabExample1 = [MyVocabClassExample1]::new()
$MyVocabExample1.Original = "Apple"
$MyVocabExample1.Transcript = "[ ˈapəl ]"
$MyVocabExample1.Translate = "Яблоко"
$MyVocabExample1.Example = "An apple is a sweet, edible fruit produced by an apple tree (Malus domestica)"
# $MyVocabExample1.$VocWordID = 1

$MyVocabExample2 = [MyVocabClassExample1]::new()
$MyVocabExample2.Original = "Pear"
$MyVocabExample2.Transcript = "[ pe(ə)r ]"
$MyVocabExample2.Translate = "Груша"
$MyVocabExample2.Example = "The pear (/ˈpɛər/) tree and shrub are a species of genus Pyrus"
# $MyVocabExample1.$VocWordID = 2

E ho'āʻo kākou e kākau i kēia i loko o nā faila me ka hoʻohana ʻana laʻana.

Kekahi code #5.1

Write-Host $ScriptDir # надеюсь $ScriptDir вы не закомментировали 
$MyFilenameExample01 = $ScriptDir + "Example01.txt"
$MyFilenameExample02 = $ScriptDir + "Example02.txt"
Write-Host $MyFilenameExample01
Out-File  -FilePath $MyFilenameExample01 -InputObject $MyVocabExample1

Out-File  -FilePath $MyFilenameExample01 -InputObject -Append $MyVocabExample2
notepad $MyFilenameExample01

- a loaʻa iā mākou kahi hewa ma ka laina Out-File -FilePath $MyFilenameExample01 -InputObject -Append $MyVocabExample2.

ʻAʻole makemake ʻo ia e hoʻohui, ah-ah, he mea hilahila.

$MyVocabExample3AsArray = @($MyVocabExample1,$MyVocabExample2)
Out-File  -FilePath $MyFilenameExample02 -InputObject $MyVocabExample3AsArray
notepad $MyFilenameExample02

E ʻike kāua i ka hana. Nānā kikokikona maikaʻi - akā pehea e hoʻihoʻi hou ai? Pono au e hoʻokomo i kekahi ʻano mea hoʻokaʻawale kikokikona, e like me nā koma?

A i ka hopena e loaʻa iā ʻoe kahi "comma-separated values ​​​​(CSV) file A HOOKOLO KALI.
#

$MyFilenameExample03 = $ScriptDir + "Example03.csv"
$MyFilenameExample04 = $ScriptDir + "Example04.csv"
Export-Csv  -Path $MyFilenameExample03 -InputObject $MyVocabExample1 
Export-Csv  -Path $MyFilenameExample03 -InputObject $MyVocabExample2 -Append 
Export-Csv  -Path $MyFilenameExample04 -InputObject $MyVocabExample3AsArray 

E like me ka maʻalahi o ka ʻike ʻana, ʻaʻole ʻokoʻa ʻia ʻo MS e kona loiloi; no ke kaʻina hana like, i hoʻokahi hihia -FilePath hoʻohana ʻia, ma kekahi -Path.

Eia kekahi, i ke kolu o ka waihona ua nalowale ka ʻōlelo Lūkini, i ka ʻehā o ka faila ua hoʻohuli ʻia ... maikaʻi, ua loaʻa kekahi mea. #TYPE System.Object[] 00
# "Helu", "Loaʻa", "LongLength", "Rank", "SyncRoot", "IsReadOnly", "IsFixedSize", "IsSynchronized"
#
E kākau hou kākou:

Export-Csv  -Path $MyFilenameExample03 -InputObject $MyVocabExample1 -Encoding Unicode
Export-Csv  -Path $MyFilenameExample03 -InputObject $MyVocabExample2 -Append -Encoding Unicode
notepad $MyFilenameExample03
notepad $MyFilenameExample04

Me he mea lā ua kōkua, akā ʻaʻole naʻe au makemake i ke ʻano.

ʻAʻole wau makemake nui ʻaʻole hiki iaʻu ke kau pololei i nā laina mai kahi mea i kahi faila.
Ma ke ala, ʻoiai ua hoʻomaka mākou e kākau i nā faila, hiki iā mākou ke hoʻomaka e mālama i kahi log hoʻomaka? Loaʻa iā mākou ka manawa ma ke ʻano he loli, hiki iā mākou ke hoʻonohonoho i ka inoa faila.

ʻOiaʻiʻo, ʻaʻohe mea e kākau ai, akā hiki iā ʻoe ke noʻonoʻo e pili ana i ka maikaʻi o ka hoʻololi ʻana i nā lāʻau.
E ho'āʻo kāua i ka xml i kēia manawa.

Kekahi xml

$MyFilenameExample05 = $ScriptDir + "Example05.xml"
$MyFilenameExample06 = $ScriptDir + "Example06.xml"
Export-Clixml  -Path $MyFilenameExample05 -InputObject $MyVocabExample1 
Export-Clixml  -Path $MyFilenameExample05 -InputObject $MyVocabExample2 -Append -Encoding Unicode
Export-Clixml  -Path $MyFilenameExample06 -InputObject $MyVocabExample3AsArray
notepad $MyFilenameExample05
notepad $MyFilenameExample06

He nui nā pono o ka lawe ʻana aku i xml - hiki ke heluhelu, hoʻokuʻu aku i ka mea holoʻokoʻa, a ʻaʻohe pono e hana i kahi uppend.

E hoʻāʻo kākou heluhelu i ka faila xml.

He heluhelu liʻiliʻi mai xml

$MyFilenameExample06 = $ScriptDir + "Example06.xml"
$MyVocabExample4AsArray = Import-Clixml -Path $MyFilenameExample06
# $MyVocabExample4AsArray 
# $MyVocabExample4AsArray[0]
# и немного о совершенно неочевидных нюансах. Powershell время от времени ведет себя не так, как вроде бы как бы стоило бы ожидать бы.
# например у меня эти два вывода отличаются
# Write-Output $MyVocabExample4AsArray 
# write-host $MyVocabExample4AsArray 

E hoʻi kāua i ka hana. Ua kākau mākou i kahi faila hoʻāʻo, heluhelu iā ia, maopopo ke ʻano o ka waiho ʻana, inā pono, hiki iā ʻoe ke kākau i kahi mea hoʻoponopono faila liʻiliʻi e hoʻohui a holoi i nā laina.

E hoʻomanaʻo wau iā ʻoe ʻo ka hana ʻana i kahi bot aʻo liʻiliʻi.

ʻO ke ʻano hana: Hoʻouna au i ke kauoha "example" i ka bot, hoʻouna ka bot iaʻu i kahi huaʻōlelo a me ka unuhi ʻana, a ma hope o 10 kekona e hoʻouna mai iaʻu i kahi unuhi a me ka manaʻo. ʻIke mākou i ka heluhelu ʻana i nā kauoha, makemake mākou e aʻo i ke koho ʻokoʻa a nānā i nā proxies, a hoʻihoʻi i nā helu helu memo i ka poina.

E hoʻokaʻawale i nā mea a pau i ʻōlelo ʻia ma mua he mea pono ʻole, e haʻi i nā hiʻohiʻona pono ʻole me txt a me csv, a mālama i ka faila ma ke ʻano he B106.

ʻAe. E hoʻouna hou kāua i ka bot.

6. Hoʻouna mai nā hana a me nā mea hou aku

Ma mua o ka hoʻomaʻamaʻa ʻana i ka hoʻokipa, pono ʻoe e hana i kahi hana no ka hoʻouna ʻana i "ma ka liʻiliʻi loa" ma mua o kahi leka hoʻāʻo.

ʻOiaʻiʻo, i ka laʻana e loaʻa iā mākou hoʻokahi hoʻouna a hoʻokahi wale nō kaʻina hana, akā pehea inā pono mākou e hana i ka mea like i nā manawa he nui?

ʻOi aku ka maʻalahi o ke kākau ʻana i kahi hana. No laila, loaʻa iā mākou kahi ʻano ʻano mea $MyVocabExample4AsArray, heluhelu mai ka faila, ma ke ʻano o kahi ʻano o nā mea ʻelua.
E hele kāua e heluhelu.

I ka manawa like, e hana mākou i ka uaki; pono mākou ma hope (ʻoiaʻiʻo, ma kēia hiʻohiʻona ʻaʻole mākou e pono :)

Kekahi code #6.1

Write-Output "This is Part 6"
$Timezone = (Get-TimeZone)
IF($Timezone.SupportsDaylightSavingTime -eq $True){
    $TimeAdjust =  ($Timezone.BaseUtcOffset.TotalSeconds + 3600) } # приведенное время
    ELSE{$TimeAdjust = ($Timezone.BaseUtcOffset.TotalSeconds) 
    }
    
function MyFirstFunction($SomeExampleForFunction1){
$TimeNow = Get-Date
$TimeNow.ToUniversalTime()
# $MyText02 = $TimeNow + " " + $SomeExampleForFunction1 # и вот тут мы получим ошибку
$MyText02 = $SomeExampleForFunction1 + " " + $TimeNow # а тут не получим, кто догадается почему - тот молодец.

$URL4SendFromFunction = "https://api.telegram.org/bot$MyToken/sendMessage?chat_id=$MyChatID&text=$MyText02"
Invoke-WebRequest -Uri $URL4SendFromFunction -Proxy $MyProxy
}

E like me kāu e ʻike maʻalahi ai, kāhea ka hana i $ MyToken a me $ MyChatID, i hoʻopaʻa ʻia ma mua.

ʻAʻohe pono e hana i kēia, a inā he $ MyToken no kēlā me kēia bot, a laila e loli ka $ MyChatID ma muli o ke kamaʻilio.

Eia naʻe, no ka mea he laʻana kēia, e haʻalele mākou iā ia i kēia manawa.

No ka mea ʻaʻole ʻo $MyVocabExample4AsArray kahi ʻano, ʻoiai ua like loa ia me hoʻokahi, a laila ʻaʻole hiki iā ʻoe ke lawe wale noi i kona loa.

Eia hou, pono mākou e hana i kahi mea hiki ʻole ke hana - parachute ʻaʻole e like me ke code - lawe a helu

Kekahi code #6.2

$MaxRandomExample = 0 
foreach ($Obj in $MyVocabExample4AsArray) {
$MaxRandomExample ++
}
Write-Output $MaxRandomExample
$RandomExample = Get-Random -Minimum 0 -Maximum ($MaxRandomExample)
$TextForExample1 = $MyVocabExample4AsArray[$RandomExample].Original
# MyFirstFunction($TextForExample1)
# или в одну строку
# MyFirstFunction($MyVocabExample4AsArray[Get-Random -Minimum 0 -Maximum ($MaxRandomExample -1)].Example)
# Угадайте сами, какой пример легче читается посторонними людьми.

moʻolelo kaulele hiʻona hoihoi. E ʻōlelo mākou makemake mākou e loaʻa ka 0 a i ʻole 1 (ʻelua wale nō mau mea i ka array). Ke kau nei i nā palena 0..1, e loaʻa iā mākou ka "1"?
ʻaʻole - ʻaʻole loaʻa iā mākou, loaʻa iā mākou kahi laʻana kūikawā.
No laila, no ka 0..1 pono mākou e hoʻonohonoho i ka nui 0..2, me ka helu ʻeleu nui loa = 1.

7. Ka hana ʻana i nā memo e hiki mai ana a me ka lōʻihi o ka pila

Ma hea mākou i kū ai ma mua? ua loaʻa iā mākou ka mea hoʻololi $MyMessageGet
a me $Content4Pars01 i loaʻa mai ia mea, a mākou i hoihoi i nā mea o ka Content4Pars01.result array

$Content4Pars01.result[0].update_id
$Content4Pars01.result[0].message
$Content4Pars01.result[0].message.text

E hoʻouna kāua i ka bot /message10, /message11, /message12, /word and again /word and /hello.
E ʻike kākou i ka mea i loaʻa iā mākou:

$Content4Pars01.result[0].message.text
$Content4Pars01.result[2].message.text

E hele kāua i nā mea a pau i loaʻa a hoʻouna i kahi pane inā he / huaʻōlelo ka memo
ʻO ka hihia o ke kūkulu ʻana, ka mea a kekahi e wehewehe ai me he mea lā-elseif, i kapa ʻia ma powershell ma o ka hoololi. I ka manawa like, ke hoʻohana nei ke code ma lalo i ke kī -wildcard, ʻaʻole pono a hōʻino.

Kekahi code #7.1

Write-Output "This is part 7"
Foreach ($Result in $Content4Pars01.result) # Да, можно сделать быстрее 
 { 
    switch -wildcard ($Result.message.text) 
            {
            "/word" {MyFirstFunction($TextForExample1)}
            }
}

E holo kāua i ka palapala i ʻelua mau manawa. E loaʻa iā mākou ka huaʻōlelo like ʻelua no kēlā me kēia ho'āʻo hoʻokō, ʻoi aku ka hewa inā mākou i hana hewa i ka hoʻokō ʻana i ka random.

Aka, oki. ʻAʻole mākou i hoʻouna hou / huaʻōlelo, no ke aha e hana hou ʻia ka leka?

ʻO ka pila no ka hoʻouna ʻana i nā memo i ka bot he lōʻihi ka lōʻihi (100 a 200 paha memo, manaʻo wau) a pono e holoi lima ʻia.

Ua wehewehe ʻia kēia ma ka palapala, akā pono ʻoe e heluhelu!

I kēia hihia, pono mākou i ka ?chat_id parameter, a &timeout, &limit, &parse_mode=HTML a &disable_web_page_preview=true ʻaʻole pono i kēia manawa.

Palapala no telegram api maanei
ʻŌlelo keʻokeʻo a me ka ʻōlelo Pelekania:
Mea hōʻike o ka mea hou mua e hoʻihoʻi ʻia. Pono e ʻoi aku ma mua o ka mea kiʻekiʻe ma waena o nā mea hōʻike o nā mea hou i loaʻa mua. Ma ka paʻamau, hoʻomaka nā mea hou me ka mua
hōʻoia ʻole ʻia hoʻihoʻi ʻia ka mea hou. Manaʻo ʻia kahi hōʻano hou i ka wā i kāhea ʻia ai getUpdates me kahi hoʻopau kiekie ma mua o kona update_id. Hiki ke kuhikuhi ʻia ka offset maikaʻi ʻole e kiʻi i nā mea hou e hoʻomaka ana mai -offset update mai ka pau ʻana o nā mea hou. E poina ʻia nā mea hou a pau i hala.

E nānā kākou:

$Content4Pars01.result[0].update_id
$Content4Pars01.result[1].update_id 
$Content4Pars01.result | select -last 1
($Content4Pars01.result | select -last 1).update_id

ʻAe, a e hoʻoponopono hou mākou a kākau hou i ka hana. Loaʻa iā mākou nā koho ʻelua - e hoʻouna i ka memo holoʻokoʻa i ka hana a hoʻoponopono iā ia i loko o ka hana, a i ʻole e hāʻawi wale i ka memo ID a hoʻonohonoho hou. No ka laʻana, ʻoi aku ka maʻalahi o ka lua.

Ma mua, ua like ke ʻano o kā mākou "memo a pau".

$URLGET = "https://api.telegram.org/bot$MyToken/getUpdates"

a e like me ia

$LastMessageId = ($Content4Pars01.result | select -last 1).update_id
$URLGET1 = "https://api.telegram.org/bot$mytoken/getUpdates?offset=$LastMessageId&limit=100" 
$MyMessageGet = Invoke-WebRequest -Uri $URLGET1 -Method Get -Proxy $MyProxy 

ʻAʻohe mea e pāpā iā ʻoe e loaʻa mua i nā memo āpau, hoʻoponopono iā lākou, a ma hope wale nō o ka hoʻokō ʻana i ka noi ʻana ʻaʻole i hōʻoia ʻia -> hōʻoia.

No ke aha he mea kūpono ke kāhea ʻana i ka hōʻoia ma hope o ka pau ʻana o nā hana āpau? Hiki ke hāʻule i ka waena o ka hoʻokō ʻana, a inā no ka laʻana o kahi chatbot manuahi, ʻaʻole he mea kūikawā ka nalo ʻana i kahi leka hoʻokahi, a laila inā ʻoe e hoʻomaʻamaʻa i ka uku uku a i ʻole kālepa kāleka, ʻoi aku ka maikaʻi o ka hopena.

ʻElua mau laina code

$LastMessageId = ($Content4Pars01.result | select -last 1).update_id  #ошибку в этом месте предполагается исправить самостоятельно. 
$URLGET1 = "https://api.telegram.org/bot$mytoken/getUpdates?offset=$LastMessageId&limit=100" 
Invoke-WebRequest -Uri $URLGET1 -Method Get -Proxy $MyProxy

8. Ma kahi o ka hopena

Nā hana maʻamau - heluhelu i nā memo, hoʻonohonoho hou i ka pila, heluhelu mai ka faila a me ke kākau ʻana i kahi faila i hana ʻia a hōʻike ʻia.

ʻEhā mau mea i koe e hana ai:

  • ka hoʻouna ʻana i ka pane pololei i kahi noi ma ke kamaʻilio
  • ka hoʻouna ʻana i kahi pane i ANY kamaʻilio i hoʻohui ʻia ka bot
  • ka hoʻokō ʻana i ke code ma kahi loop
  • e hoʻomaka ana i kahi bot mai ka windows scheduler.

He maʻalahi kēia mau hana a hiki ke maʻalahi ma ka heluhelu ʻana i nā palapala e pili ana i nā ʻāpana e like me
Hoʻonohonoho-Hoʻokō ʻAʻole Kāohi ʻia a -ExecutionPolicy Bypass
pōʻaiapuni o ke ʻano

$TimeToSleep = 3 # опрос каждые 3 секунды
$TimeToWork = 10 # минут
$HowManyTimes = $TimeToWork*60/$TimeToSleep # счетчик для цикла
$MainCounter = 0
for ($MainCounter=0; $MainCounter -le $HowManyTimes) {
sleep $TimeToSleep
$MainCounter ++

Mahalo iā ʻoukou a pau no ka heluhelu ʻana.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka