Template rau ib qho yooj yim telegram bot rau cov menyuam kawm ntawv qib 7-9 siv Powershell

Thaum sib tham nrog ib tug phooj ywg, kuv mam li nco dheev paub tias cov menyuam kawm qib 8-10 hauv lawv lub tsev kawm ntawv tsis tau qhia programming txhua. Lo lus, Excel thiab txhua yam. Tsis muaj logo, tsis txawm Pascal, tsis txawm VBA rau Excel.

Kuv xav tsis thoob, qhib Internet thiab pib nyeem ntawv -
Ib lub luag haujlwm ntawm lub tsev kawm ntawv tshwj xeeb yog los txhawb txoj kev kawm ntawm ib tiam neeg tshiab uas ua tau raws li cov xwm txheej ntawm cov ntaub ntawv hauv zej zog hauv nws theem ntawm kev loj hlob thiab kev ua neej.
Hoob no yuav tso cai rau cov tub ntxhais kawm los sib sau ua ke hauv kev xyaum lawv txoj kev paub txog kev tsim qauv ntawm Pascal programming lus. (los ntawm qhov kev pab cuam ntawm qee lub gymnasium rau 2017)

Thaum kawg, kuv txiav txim siab siv ob peb teev thiab kos ib qho piv txwv ntawm "yuav ua li cas los tsim ib qho yooj yim bot rau cov menyuam kawm ntawv."

Hauv qab no qhov kev txiav yog yuav ua li cas sau lwm yam yooj yim bot hauv Powershell thiab ua kom nws ua haujlwm yam tsis muaj webhook, IPs dawb, cov servers siab, xa cov tshuab virtual hauv huab, thiab lwm yam - ntawm lub PC hauv tsev nrog Windows tsis tu ncua.

TLDR: Lwm tsab xov xwm tho txawv nrog cov qauv sau ntawv thiab qhov tseeb, tsis muaj dab tsi los nyeem, tsis muaj kev lom zem, tsis muaj duab.

Tsis muaj dab tsi tshiab hauv tsab xov xwm, yuav luag txhua yam uas sau ua ntej twb tau nyob rau hauv HabrΓ©, piv txwv li hauv cov ntawv Cov lus qhia: Yuav ua li cas los tsim bots hauv Telegram ΠΈ Telegram bot rau kev tswj hwm qhov system.
Ntxiv mus, tsab xov xwm yog txhob txwm tshaj tawm kom tsis txhob xa mus rau cov ntaub ntawv kev kawm txhua zaus. Tsis muaj kev xa mus rau Gang 4, PowerShell Deep Dives lossis, hais, 5 Pillars ntawm AWS Well-Architected Framework hauv cov ntawv nyeem.

Hloov chaw ua ntej, koj tuaj yeem hla

Xav tias dawb hlaXyoo 2006, Microsoft tso tawm PowerShell 1.0 rau lub sijhawm ntawd-Windows XP, Vista, thiab Server 2003. Hauv qee txoj kev, nws hloov tej yam xws li cmdbat scripts, vb scripts, Windows Script Host thiab JScript.

Txawm tias tam sim no, PowerShell tsuas tuaj yeem suav tias yog kauj ruam tom ntej tom qab kev xaiv Logo, es tsis yog tej zaum tseem siv Delphi (lossis qee yam laus dua), txawm tias muaj cov loops, chav kawm, kev ua haujlwm, MS GUI hu, Git kev koom ua ke thiab thiaj li nyob.

Powershell yog siv tsis tshua muaj; koj tuaj yeem ntsib nws hauv daim ntawv ntawm PowerShell Core, VMware vSphere PowerCLI, Azure PowerShell, MS Exchange, Desired State Configuration, PowerShell Web Access thiab ib lub kaum os lossis ntau dua tsis tshua siv cov kev pab cuam thiab kev ua haujlwm. Tej zaum nws yuav tau txais cua thib ob nrog kev tso tawm NWS 2, tab sis nws tsis yog raws nraim.

Powershell kuj muaj peb qhov zoo:

  1. Nws yog qhov yooj yim heev, muaj ntau cov ntaub ntawv thiab cov piv txwv txog nws, thiab txawm nyob rau hauv Lavxias teb sab, piv txwv li, ib tsab xov xwm hais txog Foreach - los ntawm phau ntawv PowerShell hauv qhov tob - hais txog qhov sib txawv () thiab {}
  2. Nws mus nrog tus editor YOG, suav nrog Windows. Tseem muaj qee yam kev debugger nyob ntawd.
  3. Nws yog ib qho yooj yim hu los ntawm nws Cheebtsam rau tsim lub graphical interface.

0. Kev npaj.

Peb yuav tsum tau:

  • Windows PC (Kuv muaj Windows 10)
  • Yam tsawg kawg qee yam kev siv Internet (ntawm NAT piv txwv)
  • Rau cov neeg uas muaj kev txwv tsis pub nkag mus rau telegram - ntsia thiab teeb tsa freegate hauv browser, qee qhov nyuaj, ua ke nrog Symple DNS Crypt
  • Muaj ib tus neeg siv xov tooj ua haujlwm hauv koj lub xov tooj
  • Nkag siab txog cov hauv paus ntsiab lus - dab tsi yog qhov sib txawv, array, voj yog.

Qhib thiab nyeem cov ntawv - Cov lus qhia: Yuav ua li cas los tsim bots hauv Telegram ΠΈ Telegram bot rau kev tswj hwm qhov system

1. Cia peb tsim lwm qhov kev sim bot.

Txij li txhua tus neeg twb paub qhov no, thiab twb tau tshwm sim lawm, koj tuaj yeem hla nwsRaws li tau hais hauv kab lus saum toj no - Ua ntej ntawm tag nrho cov, bot rau Telegram - nws tseem yog ib daim ntawv thov khiav ntawm koj sab thiab thov rau Telegram Bot API. Ntxiv mus, API yog qhov tseeb - tus bot nkag mus rau ib qho URL tshwj xeeb nrog cov kev txwv, thiab Telegram teb nrog JSON cov khoom.

Cov teeb meem cuam tshuam: yog tias qee qhov tsis paub koj coj qee qhov chaws los ntawm JSON cov khoom thiab qee yam xa tuaj rau kev ua tiav (tsis yog lub hom phiaj), cov cai yuav raug tua rau koj.

Cov txheej txheem tsim tau piav qhia hauv ob nqe lus saum toj no, tab sis kuv rov hais dua: hauv xov tooj peb qhib kev sib cuag, nrhiav @botfather, qhia nws /newbot, tsim bot Botfortest12344321, hu rau Mynext1234bot, thiab tau txais cov lus nrog tus yuam sij tshwj xeeb ntawm Form 1234544311: AbcDefNNNNNNNNNNNNNNNN

Saib xyuas tus yuam sij thiab tsis txhob muab nws mus!

Tom qab ntawd koj tuaj yeem teeb tsa lub bot, piv txwv li, txwv tsis pub ntxiv rau cov pab pawg, tab sis thawj kauj ruam no tsis tsim nyog.

Wb nug BotFather rau "/mybot" thiab kho cov chaw yog tias peb tsis nyiam ib yam dab tsi.

Cia peb qhib cov neeg sib cuag dua, nrhiav @Botfortest12344321 nyob ntawd (nws yog qhov yuav tsum tau pib tshawb nrog @), nyem "pib" thiab sau rau bot "/Glory to the robots." Daim / kos npe yuav tsum tau, quotes tsis xav tau.
bot, tau kawg, yuav tsis teb dab tsi.

Cia peb xyuas tias bot tau tsim thiab qhib nws.

api.telegram.org/bot1234544311: AbcDefNNNNNNNNNNNNNN/getMe
qhov twg 1234544311:AbcDefNNNNNNNNNNNNNNNN yog tus yuam sij tau txais yav dhau los,
thiab tau ib txoj kab zoo li
{"ok":true,result":{"}}

Peb muaj thawj kab lus zais (token). Tam sim no peb yuav tsum nrhiav kom paub tus lej zais thib ob - tus ID ntawm kev sib tham nrog bot. Txhua qhov sib tham, pab pawg, thiab lwm yam yog tus kheej thiab muaj nws tus lej (qee zaum nrog tus rho tawm - rau cov pab pawg qhib). Txhawm rau kom paub tus lej no, peb yuav tsum thov hauv qhov browser (qhov tseeb, nws tsis yog qhov tsim nyog hauv browser, tab sis kom nkag siab zoo dua koj tuaj yeem pib nrog nws) qhov chaw nyob (qhov twg 1234544311: NNNNNNNNNN yog koj lub cim

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

thiab tau teb zoo li

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

Peb xav tau chat_id.

Cia peb txheeb xyuas tias peb tuaj yeem sau rau kev sib tham manually: hu rau qhov chaw nyob ntawm qhov browser

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

Yog tias koj tau txais cov lus los ntawm bot hauv koj qhov kev sib tham, tsis ua li cas, koj mus rau theem tom ntej.

Txoj kev no (ntawm qhov browser) koj tuaj yeem tshawb xyuas txhua lub sijhawm seb puas muaj teeb meem nrog cov cim txuas, lossis yog tias muaj qee yam zais rau qhov chaw thiab tsis ua haujlwm.

Yam koj yuav tsum paub ua ntej nyeem ntxiv

Telegram muaj ntau hom kev sib tham hauv pawg (qhib, kaw). Rau cov kev sib tham no, qee qhov haujlwm (piv txwv li, id) txawv, uas qee zaum ua rau muaj teeb meem.

Cia peb xav tias nws yog qhov kawg ntawm 2019, thiab txawm tias tus phab ej ntawm peb lub sijhawm, tus paub zoo Man-Orchestra (tus thawj coj, tus kws lij choj, tus kws tshaj lij kev ruaj ntseg, tus kws tshaj lij thiab cov kws tshaj lij MVP) Evgeniy V. qhov txawv ntawm $ i sib txawv los ntawm ib qho array, tau mastered loops, saib nyob rau hauv ob peb xyoos tom ntej no yuav mastered Chocolatey, thiab ces Parallel processing nrog PowerShell ΠΈ ForEach-Object Parallel nws yuav los.

1. Peb xav txog qhov peb bot yuav ua li cas

Kuv tsis muaj tswv yim, kuv yuav tsum xav. Kuv twb tau sau ntawv bot-note. Kuv tsis xav ua bot "uas xa ib yam dab tsi rau qhov chaw." Txhawm rau txuas rau Azure koj xav tau daim npav rho nyiaj, tab sis tus tub ntxhais kawm tau txais nws los ntawm qhov twg? Nws yuav tsum raug sau tseg tias txhua yam tsis zoo li no: cov huab tseem ceeb muab qee lub sijhawm sim dawb (tab sis koj tseem xav tau tus lej credit card - thiab zoo li ib duas yuav raug rho tawm los ntawm nws. Kuv tsis nco qab yog tias nws tau rov qab los.)

Yog tsis muaj AI ML nws tsis txaus siab los ua bot-poor-poet-weaver.

Kuv txiav txim siab los ua ib tug bot uas yuav nco kuv (lossis tsis yog kuv) ntawm lus Askiv los ntawm phau ntawv txhais lus.
Txhawm rau kom tsis txhob cuam tshuam nrog cov ntaub ntawv, phau ntawv txhais lus yuav muab khaws cia rau hauv cov ntawv nyeem thiab hloov kho manually.
Hauv qhov no, txoj haujlwm yog los qhia cov hauv paus ntawm kev ua haujlwm, thiab tsis yog ua kom tsawg kawg yog ib feem ntawm cov khoom tiav.

2. Sim ua dab tsi thiab ua li cas rau thawj zaug

Wb tsim ib daim nplaub tshev C: poshtranslate
Ua ntej, cia saib seb peb muaj powershell li cas, cia peb pib ISE ntawm kev pib-khiav
powershell yog
los yog nrhiav Powershell ISE nyob rau hauv cov kev pab cuam ntsia.
Tom qab tso tawm, ib txwm paub "qee yam ntawm tus editor" yuav qhib; yog tias tsis muaj cov ntawv sau, ces koj tuaj yeem nias "File - tsim tshiab".

Wb saib lub version ntawm powershell - sau nyob rau hauv cov ntawv nyeem:

get-host 

thiab nias F5.

Powershell yuav muab khaws cia - "Cov ntawv koj tab tom yuav khiav yuav raug cawm.", peb pom zoo, thiab txuag cov ntaub ntawv los ntawm powershell nrog lub npe hauv C: poshtranslate myfirstbotBT100.

Tom qab tso tawm, hauv lub qhov rais qis dua peb tau txais cov ntaub ntawv:

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

Kuv muaj 5.1 ib yam dab tsi, uas txaus. Yog tias koj muaj qhov qub Windows 7/8 ces tsis muaj teeb meem loj - txawm hais tias PowerShell yuav tsum tau hloov kho rau version 5 - piv txwv li. cov lus qhia.

Hom Tau-Date hauv kab hais kom ua hauv qab no, nias Enter, saib lub sijhawm, mus rau hauv paus nplaub tshev nrog cov lus txib
cd
thiab tshem lub vijtsam nrog cov lus txib cls (tsis yog, koj tsis tas yuav siv rm)

Tam sim no cia peb xyuas seb nws ua haujlwm li cas thiab yuav ua li cas - cia peb sau tsis yog tus lej, tab sis ob kab, thiab sim nkag siab tias lawv ua dab tsi. Cia peb tawm tswv yim tawm ntawm kab nrog get-host nrog lub cim # thiab ntxiv me ntsis.

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

(Dab tsi yog qhov nthuav yog tias nyob rau hauv cov lej formatting drop-down daim ntawv teev npe ntawm HabrΓ© muaj ob lub kaum os kev xaiv - tab sis Powershell tsis nyob ntawd. Dos nyob ntawd. Perl nyob ntawd.)

Thiab cia peb khiav cov cai los ntawm nias F5 lossis ">" los ntawm GUI.

Peb tau txais cov zis hauv qab no:

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

Tam sim no cia saib ob kab no thiab qee cov ntsiab lus nthuav kom peb tsis rov qab mus rau qhov no yav tom ntej.

Tsis zoo li Pascal (thiab tsis yog xwb), PowerShell nws tus kheej sim txiav txim siab yam twg los muab rau qhov sib txawv; cov ntsiab lus ntxiv txog qhov no tau sau rau hauv tsab xov xwm Kev kawm txog kev ntaus ntawv hauv programming lus
Yog li ntawd, los ntawm kev tsim ib qho $TimeNow sib txawv thiab muab nws tus nqi ntawm hnub tim thiab lub sij hawm tam sim no (Tau-Hnub), peb tsis tas yuav txhawj ntau heev txog hom ntaub ntawv yuav nyob ntawd.

Muaj tseeb, qhov kev tsis paub no yuav raug mob tom qab, tab sis qhov ntawd yog tom qab. Hauv qab no hauv cov ntawv nyeem yuav muaj ib qho piv txwv.
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ (Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС)

$TimeNow | Get-member

thiab tau ib nplooj ntawv uas tsis nkag siab

Piv txwv ntawm cov ntawv nyeem tsis tau 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")...                                         

Raws li koj tuaj yeem pom, qhov sib txawv ntawm hom TypeName: System.DateTime tau tsim nrog ntau txoj hauv kev (hauv kev nkag siab ntawm qhov peb tuaj yeem ua nrog cov khoom sib txawv no) thiab cov khoom.

Wb hu $TimeNow.DayOfYear - peb tau txais tus lej ntawm hnub ntawm lub xyoo.
Wb hu $TimeNow.DayOfYear | Get-Member - peb tau TypeName: System.Int32 thiab ib pawg ntawm txoj kev.
Wb hu $TimeNow.ToUniversalTime() - thiab tau txais lub sijhawm hauv UTC

Debugger

Qee lub sij hawm nws tshwm sim tias nws yuav tsum ua kom tiav ib qho kev pab cuam mus txog ib kab thiab pom lub xeev ntawm qhov kev pab cuam nyob rau lub sijhawm ntawd. Rau lub hom phiaj no, ISE muaj Debug muaj nuj nqi - toggle break point
Muab ib qho chaw so rau qhov chaw nruab nrab, khiav ob kab no thiab saib seb qhov tawg zoo li cas.

3. Nkag siab txog kev cuam tshuam nrog Telegram bot

Tau kawg, cov ntaub ntawv ntau dua tau sau rau ntawm kev sib cuam tshuam nrog bot, nrog rau txhua tus getpush thiab lwm yam, tab sis qhov teeb meem ntawm txoj kev xav tuaj yeem txiav txim siab xaiv.

Hauv peb qhov xwm txheej nws yog qhov tsim nyog:

  • Kawm xa ib yam dab tsi hauv kev sau ntawv
  • Kawm kom tau ib yam dab tsi los ntawm kev sau ntawv

3.1 Kawm xa ib yam dab tsi hauv kev sau ntawv thiab tau txais los ntawm nws

me ntsis code - part 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

thiab nyob rau hauv Lavxias teb sab Federation ntawm no point peb tau txais qhov yuam kev Unable mus txuas rau cov chaw taws teeb server.

Los yog peb tsis tau txais - nyob ntawm tus neeg teb xov tooj thiab seb lub npe puas tau teeb tsa thiab ua haujlwm
Zoo, txhua yam uas tseem tshuav yog ntxiv rau npe. Thov nco ntsoov tias kev siv lub npe tsis raug cai thiab feem ntau dag ntxias yog qhov txaus ntshai heev rau koj txoj kev noj qab haus huv.

Txoj haujlwm ntawm kev nrhiav tus neeg ua haujlwm npe tsis yog qhov nyuaj heev - feem ntau ntawm kev tshaj tawm http proxies ua haujlwm. Kuv xav tias tus thib tsib ua haujlwm rau kuv.

Syntax siv proxy:

Invoke-WebRequest -Uri $URL4SEND -Proxy $MyProxy

Yog tias koj tau txais cov lus hauv koj qhov kev sib tham nrog bot, ces txhua yam zoo, koj tuaj yeem txav mus. Yog tsis yog, txuas ntxiv debugging.

Koj tuaj yeem pom dab tsi koj txoj hlua $URL4SEND hloov mus rau hauv thiab sim thov nws hauv browser, zoo li qhov no:

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

3.2. Peb kawm yuav ua li cas sau "ib yam dab tsi" hauv kev sib tham, tam sim no cia peb sim nyeem nws

Wb ntxiv 4 kab ntxiv thiab saib dab tsi nyob rau hauv los ntawm | tau-tus tswv cuab

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

Qhov nthuav tshaj plaws yog muab rau peb

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

Cia peb saib dab tsi hauv lawv:

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

Yog tias txhua yam ua haujlwm rau koj, koj yuav tau txais kab ntev xws li:

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

Hmoov zoo, nyob rau hauv tsab xov xwm luam tawm yav dhau los Telegram bot rau cov thawj tswj hwm kab ke no (yog, raws li $MyMessageGet.RawContent | tau-tus tswv cuab yog System.String), twb tau disassembled.

4. Txheej txheem yam koj tau txais (peb twb paub yuav xa ib yam dab tsi)

Raws li tau sau tseg lawm S, SΡ“S,, qhov tsim nyog tshaj plaws nyob rau hauv cov ntsiab lus. Cia wb mus saib ntxiv.

Ua ntej, peb yuav sau ob peb nqe lus ntxiv rau bot los ntawm lub vev xaib interface lossis hauv xov tooj

/message1
/message2
/message3

thiab saib los ntawm qhov browser ntawm qhov chaw nyob uas tau tsim hauv $ URLGET hloov pauv.

Peb yuav pom qee yam xws li:

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

Nws yog dab tsi? Qee yam khoom siv los ntawm cov khoom sib txuas uas muaj cov lus kawg-rau-kawg tus cim, sib tham tus cim, xa tus cim thiab ntau yam ntaub ntawv.

Txawm li cas los xij, peb tsis tas yuav txiav txim siab "qhov khoom siv no yog dab tsi" - ib feem ntawm txoj haujlwm tau ua tiav rau peb. Cia peb saib dab tsi nyob hauv:

Nyeem tau cov lus lossis ntu 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. Peb yuav ua li cas txog nws tam sim no?

Cia peb khaws cov ntaub ntawv tshwm sim nyob rau hauv lub npe myfirstbotBT105 lossis qhov koj nyiam tshaj plaws, hloov lub npe thiab tawm tswv yim tawm tag nrho cov cai uas twb tau sau lawm ntawm

<#start comment 105 end comment 105#>

Tam sim no peb yuav tsum txiav txim siab qhov twg yuav tau txais phau ntawv txhais lus (zoo, qhov twg - ntawm disk hauv ib cov ntaub ntawv) thiab nws yuav zoo li cas.

Tau kawg, koj tuaj yeem sau phau ntawv txhais lus loj loj hauv cov ntawv nyeem ntawm tsab ntawv, tab sis qhov no yog tag nrho ntawm qhov taw tes.
Yog li cia saib dab tsi powershell tuaj yeem ua haujlwm nrog ib txwm.
Feem ntau, nws tsis quav ntsej cov ntaub ntawv twg los ua haujlwm nrog, nws tsis muaj teeb meem rau peb.
Peb muaj kev xaiv: txt (koj tuaj yeem, tab sis vim li cas), csv, xml.
Peb puas tuaj yeem saib xyuas txhua tus?
Cia peb tsim ib chav MyVocabClassExample1 thiab qhov sib txawv $MyVocabExample1
Kuv nco ntsoov tias chav kawm ntawv sau tsis muaj $

qee 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

Cia peb sim sau qhov no rau hauv cov ntaub ntawv siv qauv.

Qee tus lej #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

- thiab peb tau txais qhov yuam kev ntawm kab Tawm-Cov Ntaub Ntawv -FilePath $MyFilenameExample01 -InputObject -Append $MyVocabExample2.

Nws tsis xav ntxiv, ah-ah, txaj muag dab tsi.

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

Cia wb mus saib yuav ua li cas. Zoo nyeem ntawv saib - tab sis yuav ua li cas rau export nws rov qab? Kuv puas yuav tsum qhia qee yam ntawm cov ntawv cais, xws li commas?

Thiab thaum kawg koj tau txais "comma-separated values ​​(CSV) file A NYIAJ NTAWD.
#

$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 

Raws li pom tau yooj yim, MS tsis yog tshwj xeeb los ntawm nws cov logic; rau cov txheej txheem zoo sib xws, hauv ib rooj plaub -FilePath siv, hauv lwm qhov -Path.

Tsis tas li ntawd, nyob rau hauv peb cov ntaub ntawv Lavxias teb sab lus ploj, nyob rau hauv cov ntaub ntawv plaub nws muab tawm ... zoo, ib yam dab tsi tshwm sim. #HOM System.Object[] 00
# "Suav", "Length", "LongLength", "Rank", "SyncRoot", "IsReadOnly", "IsFixedSize", "IsSynchronized"
#
Cia peb rov sau dua me ntsis:

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

Nws zoo li tau pab, tab sis kuv tseem tsis nyiam hom ntawv.

Kuv tshwj xeeb tshaj yog tsis nyiam tias kuv tsis tuaj yeem tso cov kab ntawm ib qho khoom rau hauv cov ntaub ntawv ncaj qha.
Los ntawm txoj kev, txij li thaum peb pib sau ntawv rau cov ntaub ntawv, peb puas tuaj yeem pib khaws lub cav pib? Peb muaj sij hawm raws li qhov sib txawv, peb tuaj yeem teeb tsa cov ntaub ntawv npe.

Muaj tseeb, tsis muaj ib yam dab tsi los sau, tab sis koj tuaj yeem xav txog yuav ua li cas zoo tshaj los tig cov cav.
Wb sim xml tam sim no.

Qee 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

Exporting rau xml muaj ntau yam zoo - readability, export ntawm tag nrho cov khoom, thiab tsis tas yuav ua ib tug uppend.

Cia peb sim nyeem xml file.

Ib me ntsis nyeem los ntawm xml

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

Cia peb rov qab mus rau txoj haujlwm. Peb tau sau cov ntaub ntawv xeem, nyeem nws, cov ntawv khaws cia yog qhov tseeb, yog tias tsim nyog, koj tuaj yeem sau cov ntaub ntawv sib cais me me los ntxiv thiab rho tawm kab.

Cia kuv ceeb toom rau koj tias txoj haujlwm yog los ua ib qho kev cob qhia me me.

Ua hauj lwm hom: Kuv xa cov "piv txwv" hais kom ua rau bot, bot xa kuv ib lo lus randomly xaiv thiab transcription, thiab tom qab 10 vib nas this xa kuv ib tug txhais lus thiab tawm tswv yim. Peb paub yuav ua li cas nyeem cov lus txib, peb kuj xav kawm yuav ua li cas thiaj xaiv tau thiab txheeb xyuas cov npe, thiab rov pib dua cov ntawv txee rau oblivion.

Cia peb uncomment txhua yam yav tas los tawm tswv yim uas tsis tsim nyog, tawm tswv yim tawm tam sim no tsis tsim qauv piv txwv nrog txt thiab csv, thiab txuag cov ntaub ntawv raws li version B106

Auj, yog. Cia peb xa ib yam dab tsi rau bot dua.

6. Kev xa tawm los ntawm kev ua haujlwm thiab lwm yam

Ua ntej ua qhov kev txais tos, koj yuav tsum tsim kom muaj nuj nqi xa "tsawg kawg ib yam dab tsi" uas tsis yog cov lus xeem.

Tau kawg, hauv qhov piv txwv peb yuav tsuas muaj ib qho kev xa thiab tsuas yog ib qho kev ua, tab sis yuav ua li cas yog tias peb yuav tsum ua tib yam li ob peb zaug?

Nws yooj yim dua los sau ib txoj haujlwm. Yog li, peb muaj qhov sib txawv ntawm hom khoom $MyVocabExample4AsArray, nyeem los ntawm cov ntaub ntawv, nyob rau hauv daim ntawv ntawm ib qho array ntawm ntau li ob lub ntsiab lus.
Wb mus nyeem.

Nyob rau tib lub sijhawm, peb yuav nrog lub moos; peb yuav xav tau tom qab (qhov tseeb, hauv qhov piv txwv no peb yuav tsis xav tau nws :)

Qee tus lej #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
}

Raws li koj tuaj yeem pom tau yooj yim, cov haujlwm hu rau $MyToken thiab $MyChatID, uas tau nyuaj-coded ua ntej.

Tsis tas yuav ua qhov no, thiab yog tias $ MyToken yog ib qho rau txhua tus bot, ces $MyChatID yuav hloov pauv nyob ntawm kev sib tham.

Txawm li cas los xij, vim qhov no yog qhov piv txwv, peb yuav tsis quav ntsej nws rau tam sim no.

Txij li thaum $MyVocabExample4AsArray tsis yog ib qho array, txawm hais tias nws zoo ib yam li ib qho, ces koj tsis tuaj yeem nqa nws xwb thov nws ntev.

Ib zaug ntxiv peb yuav tau ua ib yam dab tsi ua tsis tau - parachute tsis raws li txoj cai - coj nws thiab suav

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

random nthuav feature. Cia peb hais tias peb xav tau 0 lossis 1 (peb tsuas muaj ob lub ntsiab lus hauv array). Thaum teem ciam teb 0..1, peb puas yuav tau txais "1"?
tsis yog - peb yuav tsis tau txais nws, peb muaj ib qho piv txwv tshwj xeeb Piv txwv 2: Tau txais tus lej random ntawm 0 thiab 99 Tau-Random -Maximum 100
Yog li ntawd, rau 0..1 peb yuav tsum tau teem lub loj 0..2, nrog rau qhov siab tshaj plaws tus naj npawb = 1.

7. Kev ua cov lus xa tuaj thiab qhov siab tshaj plaws kab ntev

Peb nres qhov twg ua ntej? peb muaj qhov hloov pauv tau txais $MyMessageGet
thiab $Content4Pars01 tau los ntawm nws, uas peb txaus siab rau cov ntsiab lus ntawm Content4Pars01.result array

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

Wb xa bot /message10, /message11, /message12, /lo lus thiab dua /lo lus thiab / nyob zoo.
Cia peb pom dab tsi peb tau txais:

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

Cia peb mus dhau txhua yam tau txais thiab xa cov lus teb yog tias cov lus yog / lo lus
rooj plaub ntawm kev tsim, ib co piav raws li yog-elseif, yog hu ua powershell ntawm switch. Nyob rau tib lub sijhawm, cov cai hauv qab no siv tus yuam sij -wildcard, uas yog qhov tsis tsim nyog thiab txawm tias muaj teeb meem.

Qee tus lej #7.1

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

Cia peb khiav tsab ntawv ob peb zaug. Peb yuav tau txais tib lo lus ob zaug rau txhua qhov kev sim ua tiav, tshwj xeeb tshaj yog tias peb tau ua yuam kev hauv kev siv random.

Tab sis nres. Peb tsis tau xa / lo lus dua, yog vim li cas cov lus rov ua dua?

Cov kab rau xa cov lus rau bot muaj qhov ntev ntev (100 lossis 200 cov lus, kuv xav) thiab yuav tsum tau muab tshem tawm manually.

Qhov no tau piav qhia hauv cov ntaub ntawv, tab sis koj yuav tsum nyeem nws!

Hauv qhov no, peb xav tau qhov ?chat_id parameter, thiab &timeout, &limit, &parse_mode=HTML thiab &disable_web_page_preview=true tseem tsis xav tau.

Cov ntaub ntawv rau telegram api nyob ntawm no
Nws hais tias dawb thiab lus Askiv:
Tus cim ntawm thawj qhov hloov tshiab yuav tsum tau xa rov qab. Yuav tsum muaj ntau dua los ntawm ib qho ntawm qhov siab tshaj plaws ntawm cov cim ntawm yav dhau los tau txais kev hloov tshiab. Los ntawm lub neej ntawd, hloov tshiab pib nrog qhov ntxov tshaj plaws
tsis muaj tseeb hloov tshiab tau rov qab los. Ib qho kev hloov tshiab raug txiav txim siab lees paub sai li sai tau thaum getUpdates raug hu nrog ib qho offset ntau dua tshaj nws update_id. Qhov tsis zoo offset tuaj yeem raug teev tseg kom khaws cov hloov tshiab pib los ntawm -offset hloov tshiab los ntawm qhov kawg ntawm cov kab hloov tshiab. Txhua qhov kev hloov tshiab dhau los yuav tsis nco qab.

Cia peb saib:

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

Yog, thiab peb yuav rov pib dua thiab rov sau cov haujlwm me ntsis. Peb muaj ob txoj kev xaiv - dhau tag nrho cov lus rau lub luag haujlwm thiab ua tiav nws tag nrho hauv kev ua haujlwm, lossis tsuas yog muab cov lus ID thiab rov pib dua. Piv txwv li, qhov thib ob zoo li yooj yim dua.

Yav dhau los, peb "tag nrho cov lus" query hlua zoo li

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

thiab nws yuav zoo li

$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 

Tsis muaj leej twg txwv koj thawj zaug tau txais tag nrho cov lus, ua lawv, thiab tsuas yog tom qab ua tiav kev thov tsis lees paub -> lees paub.

Vim li cas nws thiaj li ua rau kev txiav txim siab hu xov tooj tom qab txhua qhov kev ua tiav? Kev ua tsis tiav yog ua tau nyob rau hauv nruab nrab ntawm kev ua tiav, thiab yog tias piv txwv ntawm kev sib tham dawb, tsis muaj ib qho lus tsis muaj dab tsi tshwj xeeb, ces yog tias koj tab tom ua lwm tus neeg cov nyiaj hli lossis daim npav rho nyiaj, qhov tshwm sim yuav phem dua.

Ob peb kab ntau 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. Hloov qhov xaus

Cov haujlwm yooj yim - nyeem cov lus, rov pib dua kab, nyeem los ntawm cov ntaub ntawv thiab sau ntawv mus rau cov ntawv ua tiav thiab pom.

Tsuas muaj plaub yam uas yuav tsum ua:

  • xa cov lus teb raug rau qhov kev thov hauv kev sib tham
  • xa cov lus teb rau txhua qhov kev sib tham uas tus bot tau ntxiv
  • executing code nyob rau hauv ib lub voj
  • launching bot los ntawm windows teem sijhawm.

Tag nrho cov haujlwm no yog qhov yooj yim thiab tuaj yeem ua tiav yooj yim los ntawm kev nyeem cov ntaub ntawv hais txog qhov tsis xws li
Teem-ExecutionPolicy Unrestricted thiab -ExecutionPolicy Bypass
lub voj voog ntawm daim ntawv

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

Ua tsaug rau sawv daws nyeem.

Tau qhov twg los: www.hab.com

Ntxiv ib saib