Template ya bot yosavuta ya telegalamu ya ana asukulu m'kalasi 7-9 pogwiritsa ntchito Powershell

Pokambirana ndi mnzanga, mwadzidzidzi ndinaphunzira kuti ana a giredi 8-10 kusukulu kwawo samaphunzitsidwa konse mapulogalamu. Mawu, Excel ndi chilichonse. Palibe logo, ngakhale Pascal, ngakhale VBA ya Excel.

Ndinadabwa kwambiri, ndinatsegula intaneti ndikuyamba kuwerenga -
Imodzi mwa ntchito za sukulu yapadera ndi kulimbikitsa maphunziro a m'badwo watsopano umene umakwaniritsa zikhalidwe za gulu lachidziwitso mu msinkhu wake wa chitukuko ndi moyo.
Maphunzirowa alola ophunzira kuphatikizira chidziwitso chawo pazoyambira za chilankhulo cha Pascal. (kuchokera mu pulogalamu ya masewera olimbitsa thupi a 2017)

Pamapeto pake, ndinaganiza zokhala maola angapo ndikujambula chitsanzo cha "momwe mungapangire bot yosavuta kwa ana asukulu."

Pansi pa odulidwa ndi momwe mungalembe bot ina yosavuta mu Powershell ndikupangitsa kuti igwire ntchito popanda webhook, ma IP oyera, ma seva odzipatulira, makina ogwiritsira ntchito pamtambo, ndi zina zotero - pa PC yokhazikika yapakhomo yokhala ndi Windows yokhazikika.

TLDR: Nkhani ina yotopetsa yokhala ndi zolakwika zamagalasi ndi zowona, palibe choti muwerenge, palibe nthabwala, palibe zithunzi.

Palibe chatsopano m'nkhaniyi, pafupifupi chirichonse cholembedwa kale chakhalapo kale pa HabrΓ©, mwachitsanzo m'nkhani Malangizo: Momwe mungapangire bots mu Telegraph ΠΈ Telegraph bot kwa woyang'anira dongosolo.
Komanso, nkhaniyi ndi yowonjezereka mwadala kuti isatchule zolemba zamaphunziro nthawi zonse. Palibe zonena za Gang 4, PowerShell Deep Dives kapena, tinene, Mizati 5 ya AWS Yopangidwa Mwaluso Pamalemba.

M'malo mwa mawu oyamba, mutha kulumpha

Khalani omasuka kudumphaMu 2006, Microsoft idatulutsa PowerShell 1.0 ya Windows XP, Vista, ndi Server 2003. Mwanjira zina, idasintha zinthu monga cmdbat scripts, vb scripts, Windows Script Host ndi JScript.

Ngakhale tsopano, PowerShell ikhoza kuonedwa ngati sitepe yotsatira pambuyo pa zosankha za Logo, m'malo mwa Delphi yomwe ikugwiritsidwabe ntchito (kapena chinachake chakale), ngakhale kukhalapo kwa malupu, makalasi, ntchito, mafoni a MS GUI, Kuphatikiza kwa Git ndi zina zotero.

Powershell imagwiritsidwa ntchito kawirikawiri; mutha kukumana nayo ngati PowerShell Core, VMware vSphere PowerCLI, Azure PowerShell, MS Exchange, Desired State Configuration, PowerShell Web Access ndi mapulogalamu ndi magwiridwe antchito khumi ndi awiri kapena kupitilira apo. Mwina adzapeza mphepo yachiwiri ndi kumasulidwa Chithunzi cha WSL2, koma siziri ndendende.

Powershell ilinso ndi zabwino zitatu zazikulu:

  1. Ndizosavuta, pali mabuku ambiri ndi zitsanzo za izo, ndipo ngakhale mu Russian, mwachitsanzo, nkhani yokhudza Foreach - kuchokera m'buku. PowerShell mozama - za kusiyana () ndi {}
  2. Amapita ndi mkonzi ISE, yophatikizidwa ndi Windows. Pali ngakhale mtundu wina wa debugger pamenepo.
  3. Ndiosavuta kuyimba kuchokera pamenepo zigawo zomangira mawonekedwe azithunzi.

0. Kukonzekera.

Tidzafunika:

  • Windows PC (ndili ndi Windows 10)
  • Osachepera mtundu wina wa intaneti (kudzera NAT mwachitsanzo)
  • Kwa iwo omwe ali ndi mwayi wopeza telegalamu - adayika ndikukhazikitsa freegate mu msakatuli, nthawi zina zovuta, kuphatikiza Symple DNS Crypt
  • Kukhala ndi kasitomala wogwira ntchito pafoni yanu
  • Kumvetsetsa zoyambira - kusinthika kotani, kusanja, kuzungulira kuli bwanji.

Anatsegula ndikuwerenga zolemba - Malangizo: Momwe mungapangire bots mu Telegraph ΠΈ Telegraph bot kwa woyang'anira dongosolo

1. Tiyeni tipange mayeso ena bot.

Popeza aliyense amadziwa kale izi, ndipo zachitika kale, mutha kulumphansoMonga tafotokozera m'nkhani yomwe ili pamwambapa - Choyamba, bot ya Telegalamu - ikadali ntchito yomwe ikuyenda kumbali yanu ndikupanga zopempha ku Telegraph Bot API. Komanso, API ikuwonekera bwino - bot imapeza ulalo winawake wokhala ndi magawo, ndipo Telegalamu imayankha ndi chinthu cha JSON.

Mavuto okhudzana ndi izi: ngati mwanjira ina yosadziwika mutenga kachidindo kuchokera ku chinthu cha JSON ndikutumiza mwanjira ina kuti aphedwe (osati mwadala), codeyo idzaperekedwa kwa inu.

Njira yolenga ikufotokozedwa m'nkhani ziwiri pamwambapa, koma ndikubwereza: mu telegalamu timatsegula mauthenga, fufuzani @botfather, muuzeni /newbot, pangani bot Botfortest12344321, imbani Mynext1234bot, ndikulandira uthenga wokhala ndi chinsinsi chapadera cha fomu 1234544311:AbcDefNNNNNNNNNNNNNNNN

Samalani fungulo ndipo musataye!

Ndiye mutha kukonza bot, mwachitsanzo, kuletsa kuwonjezera pamagulu, koma pamasitepe oyamba izi sizofunikira.

Tiyeni tifunse BotFather "/mybot" ndikusintha makonda ngati sitikonda china chake.

Tiyeni titsegulenso oyanjananso, pezani @Botfortest12344321 pamenepo (ndikofunikira kuti muyambe kufufuza ndi @), dinani "yambani" ndikulembera bot "/ Ulemerero kwa ma robot." Chizindikiro / chikwangwani ndichofunikira, zolemba sizikufunika.
Bot, ndithudi, sangayankhe kalikonse.

Tiyeni tiwone ngati bot idapangidwa ndikutsegula.

api.telegram.org/bot1234544311:AbcDefNNNNNNNNNNNNNN/getMe
pomwe 1234544311:AbcDefNNNNNNNNNNNNNN ndi kiyi yolandilidwa kale,
ndi kupeza mzere ngati
{"chabwino":zoona,"zotsatira":{""}}

Tili ndi mawu oyamba achinsinsi (chizindikiro). Tsopano tiyenera kupeza nambala yachiwiri yachinsinsi - ID ya macheza ndi bot. Macheza aliwonse, gulu, ndi zina zambiri ndi payekha ndipo ali ndi nambala yakeyake (nthawi zina ndi kuchotsera - kwa magulu otseguka). Kuti tipeze nambala iyi, tifunika kupempha mu msakatuli (kwenikweni, sizofunika konse mu msakatuli, koma kuti mumvetse bwino mukhoza kuyamba nayo) adilesi (pomwe 1234544311:NNNNNNNNNN ndi chizindikiro chanu).

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

ndi kupeza yankho ngati

{"ok":true,"result":[{"update_id":...,... kucheza":{"id":123456789

Tikufuna chat_id.

Tiyeni tiwone kuti titha kulembera macheza pamanja: imbani adilesi kuchokera pa msakatuli

https://api.telegram.org/botΠ²Π°ΡˆΡ‚ΠΎΠΊΠ΅Π½/sendMessage?chat_id=123456789&text="Life is directed motion"

Mukalandira uthenga kuchokera ku bot mumacheza anu, chabwino, mumapita ku gawo lotsatira.

Mwanjira iyi (kudzera msakatuli) mutha kuyang'ana nthawi zonse ngati pali zovuta ndi m'badwo wa ulalo, kapena ngati china chake chabisika kwinakwake ndipo sichigwira ntchito.

Zomwe muyenera kudziwa musanapitirize kuwerenga

Telegalamu ili ndi mitundu ingapo yamacheza amagulu (otseguka, otsekedwa). Pamacheza awa, zina mwazochita (mwachitsanzo, id) ndizosiyana, zomwe nthawi zina zimayambitsa mavuto.

Tiyerekeze kuti ndi kumapeto kwa chaka cha 2019, ndipo ngakhale ngwazi yanthawi yathu ino, wodziwika bwino wa Man-Orchestra (woyang'anira, loya, katswiri wachitetezo chazidziwitso, wopanga mapulogalamu komanso MVP) Evgeniy V. amasiyanitsa kusinthika kwa $ i kuchokera pagulu, wadziwa malupu, yang'anani muzaka zingapo zikubwerazi adzadziwa Chocolatey, ndiyeno Parallel processing ndi PowerShell ΠΈ Kufanana Kwachinthu Chilichonse idzabwera.

1. Timaganizira zomwe bot yathu idzachita

Ndinalibe malingaliro, ndinayenera kuganiza. Ndalemba kale bot-notebook. Sindinkafuna kupanga bot "yomwe imatumiza chinachake kwinakwake." Kuti mulumikizane ndi Azure mukufunikira kirediti kadi, koma wophunzirayo amachipeza kuti? Tiyenera kukumbukira kuti zonse sizoyipa kwambiri: mitambo yayikulu imapereka mtundu wina wa nthawi yoyesera kwaulere (koma mukufunikirabe nambala ya kirediti kadi - ndipo zikuwoneka ngati dola idzachotsedwa. Sindikukumbukira ngati idabwezedwa pambuyo pake.)

Popanda AI ML sizosangalatsa kupanga bot-osauka-ndakatulo-weaver.

Ndinaganiza zopanga bot yomwe idzandikumbutsa (kapena ayi) mawu a Chingerezi kuchokera mudikishonale.
Kuti mupewe kukangana ndi nkhokwe, dikishonale imasungidwa mufayilo yolembedwa ndikusinthidwa pamanja.
Pankhaniyi, ntchito ndikuwonetsa zoyambira za ntchitoyo, osati kupanga chomaliza pang'ono.

2. Kuyesera chiyani ndi momwe kwa nthawi yoyamba

Tiyeni tipange chikwatu C:poshtranslate
Choyamba, tiyeni tiwone mtundu wanji wamagetsi omwe tili nawo, tiyeni tiyambitse ISE kudzera pakuyamba-run
powershell izi
kapena pezani Powershell ISE mumapulogalamu omwe adayikidwa.
Pambuyo poyambitsa, "mkonzi wamtundu wina" wodziwika bwino adzatsegulidwa; ngati palibe gawo lazolemba, ndiye kuti mutha kudina "Fayilo - pangani chatsopano".

Tiyeni tiwone mtundu wa powershell - lembani m'mawu:

get-host 

ndipo dinani F5.

Powershell idzapereka kusunga - "Zolemba zomwe mwatsala pang'ono kuyendetsa zidzapulumutsidwa.", tikuvomereza, ndikusunga fayilo ku powershell ndi dzina mu C: poshtranslate myfirstbotBT100.

Pambuyo poyambitsa, pawindo lazolemba zapansi timapeza tebulo la data:

Name             : Windows PowerShell ISE Host
Version          : 5.1.(ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅)

Ndili ndi 5.1 chinachake, ndichokwanira. Ngati muli ndi Windows 7/8 yakale ndiye palibe vuto lalikulu - ngakhale PowerShell idzafunika kusinthidwa kuti ikhale 5 - mwachitsanzo. malangizo.

Lembani Pezani-Date pamzere wolamula pansipa, dinani Enter, yang'anani nthawi, pitani ku chikwatu ndi lamulo.
cd
ndikuchotsa chinsalu ndi lamulo la cls (ayi, simukuyenera kugwiritsa ntchito rm)

Tsopano tiyeni tiwone zomwe zimagwira ntchito ndi momwe - tiyeni tisalembe ngakhale kachidindo, koma mizere iwiri, ndikuyesera kumvetsetsa zomwe akuchita. Tiyeni tipereke ndemanga pamzere wolandila ndi # chizindikiro ndikuwonjezera pang'ono.

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ шаблона Π±ΠΎΡ‚Π° 
# get-host
<# это ΠΏΡ€ΠΈΠΌΠ΅Ρ€ многострочного коммСнтария #>
$TimeNow = Get-Date
$TimeNow

(Chochititsa chidwi ndichakuti pamndandanda wotsikirapo wamakodi pa HabrΓ© pali zosankha khumi ndi ziwiri - koma Powershell palibe. Dos ilipo. Perl alipo.)

Ndipo tiyeni tiyendetse kachidindo mwa kukanikiza F5 kapena ">"kuchokera ku GUI.

Timapeza zotsatira zotsatirazi:

Saturday, December 8, 2019 21:00:50 PM (ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ°)

Tsopano tiyeni tiwone mizere iwiri iyi ndi mfundo zina zosangalatsa kuti tisabwerere ku izi m'tsogolomu.

Mosiyana ndi Pascal (osati kokha), PowerShell yokha imayesa kudziwa kuti ndi mtundu wanji womwe ungagawire kusintha; zambiri za izi zalembedwa m'nkhaniyi. Pulogalamu yophunzitsa pakulemba m'zilankhulo zopanga mapulogalamu
Choncho, popanga kusintha kwa $TimeNow ndikugawa mtengo wa tsiku ndi nthawi yamakono (Get-Date), sitiyenera kuda nkhawa kwambiri ndi mtundu wa deta yomwe idzakhalapo.

Zowona, kusadziwa uku kungapweteke pambuyo pake, koma ndi zamtsogolo. Pansi palembalo padzakhala chitsanzo.
Tiyeni tiwone zomwe ife tiri nazo. Tiyeni tigwire (pa mzere wolamula)

$TimeNow | Get-member

ndikupeza tsamba la zolemba zosamvetsetseka

Chitsanzo cha zolemba zosamvetsetseka nambala 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")...                                         

Monga mukuonera, kusintha kwa mtundu wa TypeName: System.DateTime yapangidwa ndi njira zambiri (m'lingaliro la zomwe tingachite ndi chinthu chosinthika ichi) ndi katundu.

Tiyeni tiyimbe $TimeNow.DayOfYear - timapeza chiwerengero cha tsiku la chaka.
Tiyeni tiyimbe $TimeNow.DayOfYear | Get-Member - timapeza TypeName: System.Int32 ndi gulu la njira.
Tiyeni tiyimbe $TimeNow.ToUniversalTime() - ndikupeza nthawi ku UTC

Debugger

Nthawi zina zimachitika kuti ndikofunikira kuchita pulogalamu mpaka pamzere wina ndikuwona momwe pulogalamuyo ilili panthawiyo. Pachifukwa ichi, ISE ili ndi ntchito ya Debug - toggle break point
Ikani malo opumira kwinakwake pakati, thamangani mizere iwiriyi ndikuwona momwe kupuma kukuwonekera.

3. Kumvetsetsa kuyanjana ndi bot Telegraph

Zachidziwikire, zolemba zambiri zalembedwa pazolumikizana ndi bot, ndi getpush ndi zina zotero, koma nkhani ya chiphunzitso ikhoza kuganiziridwa mwachisawawa.

M'malo athu ndikofunikira:

  • Phunzirani kutumiza zina mwa makalata
  • Phunzirani kupeza chinachake kuchokera m'makalata

3.1 Kuphunzira kutumiza china chake m'makalata ndikulandila kuchokera pamenepo

Khodi yaying'ono - gawo 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

ndipo mu Russian Federation panthawiyi timapeza cholakwika Sitingathe kulumikiza ku seva yakutali.

Kapena sitikulandira - zimatengera wogwiritsa ntchito telecom komanso ngati projekiti yakonzedwa ndikugwira ntchito
Chabwino, chomwe chatsala ndikuwonjezera proxy. Chonde dziwani kuti kugwiritsa ntchito proxy yosadziwika komanso yachinyengo ndizowopsa pa thanzi lanu.

Ntchito yopeza wogwirizira wogwira ntchito sizovuta kwambiri - ambiri mwa ma proxies osindikizidwa a http amagwira ntchito. Ndikuganiza kuti yachisanu yandigwira ntchito.

Syntax pogwiritsa ntchito proxy:

Invoke-WebRequest -Uri $URL4SEND -Proxy $MyProxy

Ngati mulandira uthenga pamacheza anu ndi bot, ndiye kuti zonse zili bwino, mutha kupitilira. Ngati sichoncho, pitilizani kukonza zolakwika.

Mutha kuwona zomwe chingwe chanu cha $URL4SEND chimasanduka ndikuyesera kuchipempha mumsakatuli, monga chonchi:

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

3.2. Tinaphunzira kulemba "chinachake" mu macheza, tsopano tiyeni tiyese kuwerenga

Tiyeni tiwonjeze mizere ina 4 ndikuwona zomwe zili mkati mwa | kupeza-membala

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

Chosangalatsa kwambiri chimaperekedwa kwa ife

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

Tiyeni tiwone zomwe zili mwa iwo:

Write-Host "ParsedHtml"
$MyMessageGet.ParsedHtml # Ρ‚ΡƒΡ‚ интСрСсноС
Write-Host "RawContent"
$MyMessageGet.RawContent # ΠΈ Ρ‚ΡƒΡ‚ интСрСсноС, Π½ΠΎ Π΅Ρ‰Π΅ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ΅. 
Write-Host "Content"
$MyMessageGet.Content

Ngati zonse zikugwirani ntchito, mudzapeza mzere wautali monga:

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

Mwamwayi, m'nkhani yomwe idasindikizidwa kale Telegraph bot ya woyang'anira dongosolo mzerewu (inde, malinga ndi $MyMessageGet.RawContent | kupeza membala ndi System.String), yathyoledwa kale.

4. Pangani zomwe mwalandira (tikudziwa kale kutumiza zinazake)

Monga zalembedwa kale apa, zinthu zofunika kwambiri zili m'kati. Tiyeni tione bwinobwino.

Choyamba, tilemba mawu ena angapo ku bot kuchokera pa intaneti kapena pafoni

/message1
/message2
/message3

ndikuyang'ana kudzera pa msakatuli pa adilesi yomwe idapangidwa mu $URLGET variable.

Tiwona zinthu monga:

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

Ndi chiyani? Zinthu zina zovuta kuchokera mgulu la zinthu zomwe zimakhala ndi chizindikiritso cha uthenga wakumapeto-kumapeto, chizindikiritso cha macheza, chizindikiritso chotumizira ndi zina zambiri.

Komabe, sitiyenera kudziwa "chinthu chamtundu wanji" - gawo la ntchitoyi latichitikira kale. Tiyeni tiwone zomwe zili mkatimo:

Kuwerenga analandira mauthenga kapena gawo 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. Kodi tiyenera kuchita chiyani panopa?

Tiyeni tisunge fayiloyo pansi pa dzina la myfirstbotBT105 kapena chilichonse chomwe mungafune, sinthani mutuwo ndikuyankha ma code onse olembedwa kale kudzera.

<#start comment 105 end comment 105#>

Tsopano tiyenera kusankha komwe tingapeze dikishonale (chabwino, komwe - pa disk mu fayilo) ndi momwe zidzawonekere.

Zachidziwikire, mutha kulemba dikishonale yayikulu m'mawu a script, koma izi ndizosiyana ndi mfundoyo.
Ndiye tiyeni tiwone zomwe powershell ingagwire ntchito bwino.
Kwenikweni, samasamala za fayilo yomwe amagwira nayo ntchito, ndipo sitisamala.
Tili ndi kusankha: txt (mungathe, koma bwanji), csv, xml.
Kodi tingawonere aliyense?
Tiyeni tipange kalasi ya MyVocabClassExample1 ndi yosinthika $MyVocabExample1
Ndikuwona kuti kalasiyo idalembedwa popanda $

kodi #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

Tiyeni tiyese kulemba izi mu owona ntchito chitsanzo.

Kodi #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

- ndipo timapeza cholakwika pamzere Out-File -FilePath $MyFilenameExample01 -InputObject -Append $MyVocabExample2.

Sakufuna kuwonjezera, a-ah, zamanyazi bwanji.

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

Tiyeni tione zimene zimachitika. Kuwoneka bwino kwamawu - koma momwe mungatumizirenso? Kodi ndidziwitse zolekanitsa mawu, monga ma koma?

Ndipo pamapeto pake mumapeza fayilo ya "comma-separated values ​​​​(CSV) A IMANI KUDIKIRA.
#

$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 

Monga mukuwonera mosavuta, MS sichisiyanitsidwa ndi malingaliro ake; njira yofananira, nthawi ina -FilePath imagwiritsidwa ntchito, ina -Path.

Kuonjezera apo, mu fayilo yachitatu chinenero cha Chirasha chinasowa, mu fayilo yachinayi inapezeka ... chabwino, chinachake chinachitika. #TYPE System.Object[] 00
# "Kuwerengera", "Utali", "Utali", "Rank", "SyncRoot", "IsReadOnly", "IsFixedSize", "IsSynchronized"
#
Tiyeni tilembenso pang'ono:

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

Zikuwoneka kuti zathandiza, koma sindimakondabe mawonekedwe.

Sindimakonda makamaka kuti sindingathe kuyika mizere kuchokera ku chinthu kukhala fayilo mwachindunji.
Mwa njira, popeza tinayamba kulembera mafayilo, kodi tingayambe kusunga chipika choyambira? Tili ndi nthawi ngati kusintha, tikhoza kukhazikitsa dzina la fayilo.

Zowona, palibe cholembera pano, koma mutha kuganiza za momwe mungazungulire zipika.
Tiyeni tiyese xml pakadali pano.

Ena 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

Kutumiza ku xml kuli ndi zabwino zambiri - kuwerengeka, kutumiza kunja kwa chinthu chonsecho, ndipo palibe chifukwa chokweza.

Tiyeni tiyese werengani fayilo ya xml.

Kuwerenga pang'ono kuchokera ku xml

$MyFilenameExample06 = $ScriptDir + "Example06.xml"
$MyVocabExample4AsArray = Import-Clixml -Path $MyFilenameExample06
# $MyVocabExample4AsArray 
# $MyVocabExample4AsArray[0]
# ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… Π½ΡŽΠ°Π½ΡΠ°Ρ…. Powershell врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Π΅Π΄Π΅Ρ‚ сСбя Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΊΠ°ΠΊ Π±Ρ‹ стоило Π±Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π±Ρ‹.
# Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρƒ мСня эти Π΄Π²Π° Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ
# Write-Output $MyVocabExample4AsArray 
# write-host $MyVocabExample4AsArray 

Tiyeni tibwerere ku ntchitoyo. Tinalemba fayilo yoyesera, ndikuiwerenga, mawonekedwe osungira ndi omveka, ngati kuli kofunikira, mukhoza kulemba mkonzi wosiyana wa fayilo kuti muwonjezere ndi kuchotsa mizere.

Ndiroleni ndikukumbutseni kuti ntchitoyo inali kupanga bot yaing'ono yophunzitsira.

Mtundu wa ntchito: Ndimatumiza lamulo la "chitsanzo" ku bot, bot imanditumizira mawu osankhidwa mwachisawawa ndi zolemba, ndipo pambuyo pa masekondi a 10 amanditumizira kumasulira ndi ndemanga. Timadziwa kuwerenga malamulo, tikufunanso kuphunzira momwe tingasankhire ma proxies, ndikukhazikitsanso zowerengera kuti ziiwale.

Tiyeni tisiye ndemanga zonse zomwe zidanenedwapo kale ngati zosafunikira, perekani ndemanga pazitsanzo zosafunikira ndi txt ndi csv, ndikusunga fayilo ngati mtundu wa B106.

O inde. Tiyeni titumize kena kake ku bot kachiwiri.

6. Kutumiza kuchokera ku ntchito ndi zina

Musanayambe kulandila, muyenera kupanga ntchito yotumizira "chinachake" osati uthenga woyesera.

Inde, mu chitsanzo tidzakhala ndi kutumiza kumodzi kokha ndi ndondomeko imodzi yokha, koma bwanji ngati tifunika kuchita zomwezo kangapo?

Ndikosavuta kulemba ntchito. Chifukwa chake, tili ndi chinthu chosinthika $MyVocabExample4AsArray, chowerengedwa kuchokera pafayilo, mwa mawonekedwe amitundu yambiri ngati zinthu ziwiri.
Tiyeni tiwerenge.

Nthawi yomweyo, tithana ndi wotchiyo; tidzayifuna mtsogolo (inde, mu chitsanzo ichi sitidzayifuna :)

Kodi #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
}

Monga mukuwonera mosavuta, ntchitoyi imayitanitsa $MyToken ndi $MyChatID, zomwe zinali zolembedwa molimba kale.

Palibe chifukwa chochitira izi, ndipo ngati $MyToken ndi imodzi pa bot iliyonse, ndiye $MyChatID idzasintha malinga ndi macheza.

Komabe, popeza ichi ndi chitsanzo, sitinyalanyaza pano.

Popeza $MyVocabExample4AsArray si mndandanda, ngakhale ndi wofanana kwambiri ndi umodzi, ndiye inu simungakhoze kungochitenga icho funsani kutalika kwake.

Apanso tidzayenera kuchita zomwe sizingachitike - parachute osati molingana ndi kachidindo - tenga ndikuwerengera

Kodi #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)
# Π£Π³Π°Π΄Π°ΠΉΡ‚Π΅ сами, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π»Π΅Π³Ρ‡Π΅ читаСтся посторонними людьми.

mwachisawawa chidwi mbali. Tiyerekeze kuti tikufuna kulandira 0 kapena 1 (tili ndi zinthu ziwiri zokha pamndandanda). Poika malire 0..1, tidzapeza "1"?
ayi - sitidzachipeza, tili ndi chitsanzo chapadera Chitsanzo 2: Pezani chiwerengero chachisawawa pakati pa 0 ndi 99 Pezani Mwachisawawa -Maximum 100
Chifukwa chake, pa 0..1 tiyenera kukhazikitsa kukula kwa 0..2, ndi nambala yayikulu kwambiri = 1.

7. Kukonza mauthenga obwera ndi kutalika kwa mzere wa mzere

Tinayima kuti poyamba? talandira zosinthika $MyMessageGet
ndi $Content4Pars01 zopezedwa kuchokera pamenepo, zomwe tili ndi chidwi ndi zomwe zili mu Content4Pars01.result array

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

Tiyeni titumize bot /message10, /message11, /message12, /mawu ndi mobwerezabwereza /mawu ndi /hello.
Tiyeni tiwone zomwe tili nazo:

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

Tiyeni tidutse chilichonse cholandilidwa ndikutumiza yankho ngati uthengawo unali /mawu
nkhani ya kumanga, zomwe ena amazifotokoza ngati-mwina, zimatchedwa powershell kudzera pa switch. Nthawi yomweyo, nambala yomwe ili pansipa imagwiritsa ntchito kiyi -wildcard, yomwe ili yosafunikira komanso yovulaza.

Kodi #7.1

Write-Output "This is part 7"
Foreach ($Result in $Content4Pars01.result) # Π”Π°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ быстрСС 
 { 
    switch -wildcard ($Result.message.text) 
            {
            "/word" {MyFirstFunction($TextForExample1)}
            }
}

Tiyeni tiyendetse script kangapo. Tipeza mawu omwewo kawiri pakuyesera kulikonse, makamaka ngati talakwitsa pakukhazikitsa mwachisawawa.

Koma siyani. Sitinatumize / mawu kachiwiri, ndiye chifukwa chiyani uthengawo ukukonzedwanso?

Mzere wotumizira mauthenga ku bot uli ndi utali wokwanira (mauthenga 100 kapena 200, ndikuganiza) ndipo uyenera kuchotsedwa pamanja.

Izi zafotokozedwa muzolemba, koma muyenera kuziwerenga!

Pamenepa, tikufuna ?chat_id parameter, ndi &timeout, &limit, &parse_mode=HTML ndi &disable_web_page_preview=true sizikufunika panobe.

Zolemba za telegram api yafika
Akuti mu chizungu ndi Chingerezi:
Chizindikiritso cha zosinthidwa zoyamba kubwezedwa. Ayenera kukhala wamkulu ndi mmodzi kuposa apamwamba kwambiri pakati pa zizindikiritso za zosinthidwa zolandilidwa kale. Mwachikhazikitso, zosintha zoyambira ndi zoyambirira
osatsimikizika zosintha zabwezedwa. Zosintha zimayesedwa kuti zatsimikiziridwa posachedwa getUpdates itayitanidwa ndi kuthetsa Apamwamba kuposa update_id yake. Kusintha koyipa kumatha kufotokozedwa kuti mutenge zosintha kuyambira -offset pomwe kumapeto kwa mzere wosintha. Zosintha zonse zam'mbuyomu zidzayiwalika.

Tiyeni tiwone:

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

Inde, ndipo tidzayikhazikitsanso ndikulembanso ntchitoyo pang'ono. Tili ndi zosankha ziwiri - perekani uthenga wonse ku ntchitoyi ndikuyikonza kwathunthu, kapena perekani ID ya uthenga ndikuyikhazikitsanso. Mwachitsanzo, yachiwiri ikuwoneka yosavuta.

M'mbuyomu, mndandanda wathu wamafunso "mauthenga onse" unkawoneka ngati

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

ndipo zidzawoneka ngati

$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 

Palibe amene amakuletsani kuti muyambe kulandira mauthenga onse, kuwakonza, ndipo pokhapokha atachita bwino popempha osatsimikiziridwa -> atsimikiziridwa.

Chifukwa chiyani ndizomveka kuyimba chitsimikiziro pambuyo pomaliza kukonza? Kulephera kumatheka pakati pa kuphedwa, ndipo ngati mwachitsanzo chachatbot yaulere, kusowa uthenga umodzi sichachilendo, ndiye ngati mukukonzekera malipiro a munthu kapena khadi, zotsatira zake zingakhale zoipa.

Mizere ingapo yamakodi

$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. M'malo momaliza

Ntchito zoyambira - kuwerenga mauthenga, kukonzanso mzere, kuwerenga kuchokera pafayilo ndikulemba mpaka fayilo kumachitika ndikuwonetsedwa.

Kwatsala zinthu zinayi zokha:

  • kutumiza yankho lolondola ku pempho mu macheza
  • kutumiza yankho ku macheza ALIYENSE pomwe bot idawonjezedwa
  • kukhazikitsa code mu loop
  • kuyambitsa bot kuchokera pa Windows scheduler.

Ntchito zonsezi ndi zophweka ndipo zingatheke mosavuta powerenga zolemba za magawo monga
Set-ExecutionPolicy Yopanda malire ndi -ExecutionPolicy Bypass
kuzungulira kwa mawonekedwe

$TimeToSleep = 3 # опрос ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 3 сСкунды
$TimeToWork = 10 # ΠΌΠΈΠ½ΡƒΡ‚
$HowManyTimes = $TimeToWork*60/$TimeToSleep # счСтчик для Ρ†ΠΈΠΊΠ»Π°
$MainCounter = 0
for ($MainCounter=0; $MainCounter -le $HowManyTimes) {
sleep $TimeToSleep
$MainCounter ++

Zikomo kwa aliyense amene awerenga.

Source: www.habr.com

Kuwonjezera ndemanga