Ụdị maka bot telegram dị mfe maka ụmụ akwụkwọ nọ na klaasị 7-9 na-eji Powershell

Mgbe mụ na otu enyi m na-akparịta ụka, amụtara m na mberede na ụmụaka nọ na klaasị 8-10 n'ụlọ akwụkwọ ha anaghị akụzi mmemme ma ọlị. Okwu, Excel na ihe niile. Enweghị akara ngosi, ọbụnadị Pascal, ọbụnadị VBA maka Excel.

O juru m anya, meghere ịntanetị wee malite ịgụ akwụkwọ -
Otu n'ime ọrụ nke ụlọ akwụkwọ pụrụ iche bụ ịkwalite mmụta nke ọgbọ ọhụrụ nke na-ezute ọnọdụ nke ọha mmadụ ozi na ọkwa mmepe ya na ụzọ ndụ ya.
Usoro nkuzi a ga-enye ụmụ akwụkwọ ohere ịgbakọ n'omume ha maara ihe ndị bụ isi nke asụsụ mmemme Pascal. (site na mmemme nke ụfọdụ mgbatị ahụ maka 2017)

N'ikpeazụ, ekpebiri m itinye awa ole na ole wee depụta ihe atụ nke "otu esi emepụta bot dị mfe maka ụmụ akwụkwọ."

N'okpuru ịkpụ bụ otu esi ede bot ọzọ dị mfe na Powershell ma mee ka ọ rụọ ọrụ na-enweghị webhook, ọcha IP, sava raara onwe ya nye, igwe mebere igwe na igwe ojii, na ihe ndị ọzọ - na PC ụlọ mgbe niile na Windows.

TLDR: Edemede ọzọ na-agwụ ike nwere mmejọ ụtọ asụsụ na nke eziokwu, ọ nweghị ihe ị ga-agụ, enweghị ọchị, enweghị foto.

Ọ dịghị ihe ọhụrụ n'ime akụkọ ahụ, ihe fọrọ nke nta ka ọ bụrụ ihe niile e dere na mbụ dị na Habré, dịka ọmụmaatụ na isiokwu Ntuziaka: Otu esi emepụta bots na Telegram и Telegram bot maka onye nchịkwa sistemụ.
Ọzọkwa, a na-ama ụma kọọ akụkọ ahụ ka ọ ghara izo aka na akwụkwọ agụmakwụkwọ oge ọ bụla. Enweghị nrụtụ aka na Gang 4, PowerShell Deep Dives ma ọ bụ, sịnụ, Ogidi 5 nke AWS nke ọma na-arụ ọrụ nke ọma na ederede.

Kama okwu mmalite, ị nwere ike ịwụ

Enwere onwe gị ịmafeNa 2006, Microsoft wepụtara PowerShell 1.0 maka Windows XP, Vista, na Server 2003 mgbe ahụ. N'ụzọ ụfọdụ, ọ nọchiri ihe ndị dị ka cmdbat scripts, vb scripts, Windows Script Host na JScript.

Ọbụna ugbu a, PowerShell nwere ike na-atụle dị ka nzọụkwụ ọzọ mgbe Logo nhọrọ, kama eleghị anya ka na-eji Delphi (ma ọ bụ ihe tọrọ), n'agbanyeghị ọnụnọ nke loops, klaasị, ọrụ, na-akpọ MS GUI, Njikọ Git na na.

A na-eji Powershell obere oge; ị nwere ike izute ya naanị n'ụdị PowerShell Core, VMware vSphere PowerCLI, Azure PowerShell, MS Exchange, nhazi steeti achọrọ, Nweta Weebụ PowerShell na iri na abuo ma ọ bụ karịa adịkarịghị eji mmemme na ọrụ. Ikekwe ọ ga-enweta ifufe nke abụọ na ntọhapụ WSL2, ma ọ bụghị kpọmkwem.

Powershell nwekwara nnukwu uru atọ:

  1. Ọ dịtụ mfe, e nwere ọtụtụ akwụkwọ na ihe atụ banyere ya, na ọbụna na Russian, dị ka ihe atụ, otu isiokwu banyere Foreach - site n'akwụkwọ. PowerShell na omimi - gbasara ọdịiche () na {}
  2. Ya na onye nchịkọta akụkọ na-aga ise, gụnyere na Windows. Enwere ọbụna ụdị nbibi ebe ahụ.
  3. Ọ dị mfe ịkpọ site na ya components maka iwuli interface eserese.

0. Nkwadebe.

Anyị ga-achọ:

  • Windows PC (M nwere Windows 10)
  • Opekempe ụfọdụ ụdị ịntanetị (site na NAT ọmụmaatụ)
  • Maka ndị nwere obere ohere na telegram - arụnyere na hazie freegate na ihe nchọgharị ahụ, n'ọnọdụ ụfọdụ siri ike, yana Symple DNS Crypt.
  • Inwe onye ahịa teligram na-arụ ọrụ na ekwentị gị
  • Ịghọta ihe ndị bụ isi - ihe mgbanwe, nhazi, loop bụ.

Mepere ma gụọ akụkọ - Ntuziaka: Otu esi emepụta bots na Telegram и Telegram bot maka onye nchịkwa sistemụ

1. Ka anyị mepụta bot ule ọzọ.

Ebe ọ bụ na onye ọ bụla maara nke a, ma emeworị, ị nwekwara ike ịwụpụ yaDị ka ekwuru n'isiokwu dị n'elu - Nke mbụ, bot maka Telegram - ọ ka bụ ngwa na-agba n'akụkụ gị ma na-arịọ arịrịọ na Telegram Bot API. Ọzọkwa, API doro anya - bot ahụ na-enweta URL dị iche iche nwere parampat, na Telegram na-eji ihe JSON zaghachi.

Nsogbu ndị metụtara: ọ bụrụ n'ụzọ amaghị ama ị nara koodu ụfọdụ n'ime ihe JSON wee ziga ya maka igbu ya (ọ bụghị n'ebumnobi), a ga-emere gị koodu ahụ.

A kọwara usoro okike n'isiokwu abụọ dị n'elu, mana m na-ekwughachi: na telegram anyị na-emeghe kọntaktị, chọọ @botfather, gwa ya / newbot, mepụta bot Botfortest12344321, kpọọ ya Mynext1234bot, wee nweta ozi nwere igodo pụrụ iche nke fọm 1234544311:AbcDefNNNNNNNNNNNNNN

Lekọta igodo ahụ ma enyela ya!

Mgbe ahụ, ị ​​​​nwere ike ịhazi bot, dịka ọmụmaatụ, machibido ịgbakwunye ya na otu, ma na nzọụkwụ mbụ nke a adịghị mkpa.

Ka anyị jụọ BotFather maka “/mybot” wee mezie ntọala ma ọ bụrụ na ihe anaghị amasị anyị.

Ka anyị mepee kọntaktị ọzọ, chọta @Botfortest12344321 ebe ahụ (ọ bụ iwu na iji @ malite ọchụchọ), pịa "malite" wee degara bot "/ Ebube na robots." Achọrọ / akara, ọ dịghị mkpa nhota.
Bot ahụ, n'ezie, agaghị aza ihe ọ bụla.

Ka anyị lelee na emepụtara bot ma mepee ya.

api.telegram.org/bot1234544311:AbcDefNNNNNNNNNNNNNNNN/getMe
ebe 1234544311:AbcDefNNNNNNNNNNNN bụ igodo anataburu,
ma nweta ahịrị dị ka
{"ok":true,"result":{""}}

Anyị nwere akpaokwu nzuzo (token). Ugbu a, anyị kwesịrị ịchọpụta nọmba nzuzo nke abụọ - ID nke nkata na bot. Mkparịta ụka ọ bụla, otu, wdg bụ nke ọ bụla ma nwee nọmba nke ya (mgbe ụfọdụ yana mwepu - maka otu mepere emepe). Iji chọpụta nọmba a, anyị kwesịrị ịrịọ na ihe nchọgharị (n'ezie, ọ dịghị mkpa na ihe nchọgharị ahụ, ma maka nghọta ka mma ị nwere ike ịmalite na ya) adreesị (ebe 1234544311: NNNNNNNNNN bụ akara gị).

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

ma nweta nzaghachi dị ka

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

Anyị chọrọ chat_id.

Ka anyị lelee na anyị nwere ike iji aka dee nkata ahụ: kpọọ adreesị site na ihe nchọgharị

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

Ọ bụrụ na ịnata ozi sitere na bot na nkata gị, ọ dị mma, ịga n'ihu na ọkwa ọzọ.

N'ụzọ dị otú a (site na ihe nchọgharị) ị nwere ike ịlele mgbe niile ma enwere nsogbu na njikọ njikọ, ma ọ bụ ọ bụrụ na ihe zoro ezo ebe ọ naghị arụ ọrụ.

Ihe ị kwesịrị ịma tupu ịga n'ihu ịgụ akwụkwọ

Telegram nwere ọtụtụ ụdị nkata otu (meghere, mechiri emechi). Maka nkata ndị a, ụfọdụ ọrụ (dịka ọmụmaatụ, id) dị iche, nke na-ebute ụfọdụ nsogbu mgbe ụfọdụ.

Ka anyị chee na ọ bụ njedebe nke 2019, na ọbụna dike nke oge anyị, onye a ma ama Man-Orchestra (onye nchịkwa, ọkàiwu, ọkachamara nchekwa ozi, mmemme na ihe fọrọ nke nta ka ọ bụrụ MVP) Evgeniy V. na-amata ọdịiche nke $ i site n'usoro, maara loops, anya na-esote di na nwunye nke afọ ga-amụta Chocolatey, na mgbe ahụ Nhazi ya na PowerShell и Ndekota Maka Ihe Ọ bụla ọ ga-abịa.

1. Anyị na-eche banyere ihe bot anyị ga-eme

Enweghị m echiche ọ bụla, ekwesịrị m iche. Edela m akwụkwọ bot- notebook. Achọghị m ime bot "na-eziga ihe ebe." Iji jikọọ na Azure, ịchọrọ kaadị kredit, mana kedu ebe nwata akwụkwọ ahụ si enweta ya? Ekwesiri ighota na ihe nile adighi nma: isi igwe ojii na-enye udiri oge ule n'efu (ma ị ka choro nọmba kaadị kredit - ma o di ka dollar ga-esi na ya rie ya. Echeghị m ma ọ bụrụ e mechara weghachi ya.)

Na-enweghị AI ML, ọ bụghị ihe na-adọrọ mmasị ime onye na-akpa ákwà bot-ogbenye-poet.

Ekpebiri m ime bot nke ga-echetara m (ma ọ bụ na ọ bụghị m) okwu Bekee sitere na akwụkwọ ọkọwa okwu.
Iji zere ịbanye na nchekwa data, a ga-echekwa ọkọwa okwu na faịlụ ederede ma jiri aka meelite ya.
N'okwu a, ọrụ ahụ bụ igosi ihe ndị bụ isi nke ọrụ ahụ, ọ bụghịkwa ime ka ọ dịkarịa ala ngwaahịa agwụla.

2. Na-agbalị ihe na otú maka oge mbụ

Ka anyị mepụta folda C:poshtranslate
Mbụ, ka anyị hụ ụdị ike anyị nwere, ka anyị malite ISE site na mmalite-agba ọsọ
powershell ise
ma ọ bụ chọta Powershell ISE na mmemme arụnyere.
Mgbe ebidochara, “ụdị nchịkọta akụkọ” a maara nke ọma ga-emeghe; ọ bụrụ na enweghị mpaghara ederede, ị nwere ike pịa “Faịlụ - mepụta ọhụrụ”.

Ka anyị lelee ụdị nke powershell - dee na mpaghara ederede:

get-host 

wee pịa F5.

Powershell ga-enye ịchekwaa - "A ga-echekwa edemede ị na-achọ ịgba ọsọ.", anyị kwenyere, ma chekwaa faịlụ ahụ site na powershell nwere aha na C: poshtranslate. myfirstbotBT100.

Mgbe mmalite, na ala ederede window anyị na-enweta a data table:

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

Enwere m ihe 5.1, nke ahụ ezuola. Ọ bụrụ na ị nwere Windows 7/8 ochie, ọ nweghị nnukwu ihe - ọ bụ ezie na PowerShell ga-adị mkpa ka emelite ya na ụdị 5 - dịka ọmụmaatụ. ntụziaka.

Pịnye Get-Date na ahịrị iwu dị n'okpuru, pịa Tinye, lelee oge, gaa na nchekwa mgbọrọgwụ na iwu ahụ
cd
wee kpochapụ ihuenyo site na iji iwu cls (Mba, ịchọghị iji rm)

Ugbu a, ka anyị lelee ihe na-arụ ọrụ na otú - ka dee ọ bụghị ọbụna koodu, ma abụọ ahịrị, na-agbalị ịghọta ihe ha na-eme. Ka anyị jiri akara # nweta onye ọbịa kwuo ahịrị wee tinye ntakịrị.

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

(Ihe na-adọrọ mmasị bụ na n'ime ndepụta ndetu nhazi koodu na Habré enwere nhọrọ iri na abụọ - mana Powershell adịghị ebe ahụ. Dos dị ebe ahụ. Perl nọ ebe ahụ.)

Ka anyị mee koodu ahụ site na ịpị F5 ma ọ bụ ">" site na GUI.

Anyị na-enweta nsonaazụ a:

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

Ugbu a, ka anyị leba anya n'ahịrị abụọ a na ihe ụfọdụ na-adọrọ mmasị ka anyị ghara ịlaghachi na nke a n'ọdịnihu.

N'adịghị ka Pascal (ọ bụghị naanị), PowerShell n'onwe ya na-anwa ikpebi ụdị ị ga-ekenye na mgbanwe; nkọwa ndị ọzọ gbasara nke a ka edere n'isiokwu ahụ. Mmemme mmụta maka pịnye n'asụsụ mmemme
Ya mere, site n'ịmepụta mgbanwe $TimeNow ma nye ya uru nke ụbọchị na oge dị ugbu a (Get-Date), anyị agaghị echegbu onwe anyị nke ukwuu maka ụdị data ga-adị.

N'ezie, amaghị ihe a nwere ike imerụ ahụ ma emechaa, ma nke ahụ bụ maka mgbe e mesịrị. N'okpuru na ederede a ga-enwe ihe atụ.
Ka anyị hụ ihe anyị nwetara. Ka anyị gbuo (na ahịrị iwu)

$TimeNow | Get-member

wee nweta ibe ederede enweghị nghọta

Ọmụmaatụ nke nọmba ederede enweghị nghọta 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")...                                         

Dị ka ị pụrụ ịhụ, a mgbanwe nke ụdị TypeName: System.DateTime e kere na ụyọkọ ụzọ (n'echiche nke ihe anyị nwere ike ime na nke a agbanwe ihe) na Njirimara.

Ka anyị kpọọ $TimeNow.DayOfYear - anyị na-enweta ọnụ ọgụgụ nke ụbọchị nke afọ.
Ka anyị kpọọ $TimeNow.DayOfYear | Get-Member - anyị nwetara TypeName: System.Int32 na otu ụzọ.
Ka anyị kpọọ $TimeNow.ToUniversalTime() - ma nweta oge na UTC

Onye nbibi

Mgbe ụfọdụ, ọ na-eme na ọ dị mkpa ime mmemme ruo otu ahịrị wee hụ ọnọdụ mmemme ahụ n'oge ahụ. Maka ebumnuche a, ISE nwere ọrụ Debug - ebe nkwụsịtụ gbanwee
Debe ebe nkwụsịtụ ebe n'etiti, mee ahịrị abụọ a wee hụ ka nkwụsịtụ ahụ dị.

3. Ịghọta mmekọrịta na Telegram bot

N'ezie, edeela akwụkwọ ndị ọzọ gbasara mmekọrịta ya na bot, na getpush niile na ihe ndị ọzọ, mana enwere ike ịtụle okwu nke tiori dị ka nhọrọ.

N'ọnọdụ anyị, ọ dị mkpa:

  • Mụta iziga ihe na akwụkwọ ozi
  • Mụta inweta ihe site na akwụkwọ ozi

3.1 Ịmụta izipu ihe na akwụkwọ ozi wee nata na ya

Obere koodu - akụkụ 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

na na Russian Federation n'oge a anyị na-enweta njehie Enweghị ike ijikọ na ihe nkesa dịpụrụ adịpụ.

Ma ọ bụ anyị anaghị enweta ya - dabere na onye na-ahụ maka telecom yana ma ahaziri proxy ma na-arụ ọrụ
Ọfọn, naanị ihe fọdụrụ bụ ịgbakwunye proxy. Biko mara na iji proxy ezoro ezo na n'ozuzu nke aghụghọ dị oke egwu maka ahụike gị.

Ọrụ nke ịchọta proxy na-arụ ọrụ adịghị esiri ike - ọtụtụ n'ime proxies http bipụtara na-arụ ọrụ. Echere m na nke ise rụrụ m ọrụ.

Syntax site na iji proxy:

Invoke-WebRequest -Uri $URL4SEND -Proxy $MyProxy

Ọ bụrụ na ị nweta ozi na nkata gị na bot, mgbe ahụ ihe niile dị mma, ị nwere ike ịga n'ihu. Ọ bụrụ na ọ bụghị, gaa n'ihu na-ehichapụ.

Ị nwere ike ịhụ ihe eriri $URL4SEND gị na-atụgharị wee gbalịa ịrịọ ya na ihe nchọgharị, dị ka nke a:

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

3.2. Anyị mụtara ka esi ede "ihe" na nkata, ugbu a ka anyị gbalịa ịgụ ya

Ka anyị tinye ahịrị 4 ọzọ wee hụ ihe dị n'ime site na | nweta-otu

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

Ihe kacha adọrọ mmasị ka enyere anyị

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

Ka anyị hụ ihe dị n'ime ha:

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

Ọ bụrụ na ihe niile na-arụ ọrụ maka gị, ị ga-enweta ogologo ahịrị dị ka:

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

Ọ dabara nke ọma, na edemede ebipụtara na mbụ Telegram bot maka onye na-ahụ maka sistemụ ahịrị a (ee, dị ka $MyMessageGet.RawContent | nweta-otu bụ System.string), agbasasịlarị.

4. Hazie ihe ị na-enweta (anyị amaralarị otu esi ezipụ ihe)

Dị ka e deburu ebe a, ihe kachasị mkpa na-adabere na ọdịnaya. Ka anyị lebakwuo anya na ya.

Nke mbụ, anyị ga-edepụta nkebi ahịrịokwu abụọ na bot site na ntanetị weebụ ma ọ bụ site na ekwentị

/message1
/message2
/message3

wee lelee ihe nchọgharị ahụ n'adreesị etolite na mgbanwe $URLGET.

Anyị ga-ahụ ihe dị ka:

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

Kedu ihe ọ bụ? Ụfọdụ ihe mgbagwoju anya sitere n'usoro ihe nwere njirimara ozi ngwụcha ruo ọgwụgwụ, ihe nchọpụta nkata, izipu ihe nchọpụta na ọtụtụ ozi ndị ọzọ.

Otú ọ dị, ọ dịghị anyị mkpa ịchọpụta "ụdị ihe nke a bụ" - akụkụ nke ọrụ ahụ emelarị anyị. Ka anyị hụ ihe dị n'ime:

Ọgụgụ natara ozi ma ọ bụ akụkụ 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. Gịnị ka anyị kwesịrị ime ugbu a?

Ka anyị chekwaa faịlụ a ga-esi na ya pụta n'okpuru aha myfirstbotBT105 ma ọ bụ ihe ọ bụla masịrị gị, gbanwee aha wee zaa ajụjụ niile ederelarị koodu site na.

<#start comment 105 end comment 105#>

Ugbu a, anyị kwesịrị ikpebi ebe ị ga-esi nweta akwụkwọ ọkọwa okwu (nke ọma, ebe - na diski na faịlụ) na ihe ọ ga-adị.

N'ezie, ị nwere ike dee nnukwu akwụkwọ ọkọwa okwu ziri ezi na ederede nke edemede ahụ, mana nke a bụ kpamkpam n'akụkụ isi okwu.
Ya mere, ka anyị hụ ihe powershell nwere ike ịrụ ọrụ na-ejikarị.
N'ozuzu, ọ chọghị ịma faịlụ ọ ga-arụ ọrụ, ọ dịghị mkpa anyị.
Anyị nwere nhọrọ: txt (ị nwere ike, mana gịnị kpatara), csv, xml.
Anyị nwere ike na-ekiri onye ọ bụla? Ka anyị hụ onye ọ bụla.
Ka anyị mepụta klas MyVocabClassExample1 na mgbanwe $MyVocabExample1
Achọpụtara m na edere klas ahụ na-enweghị $

ụfọdụ koodu #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

Ka anyị nwaa iji dee nke a n'ime faịlụ ezi ihe nṅomi.

Ụfọdụ koodu #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

- na anyị na-enweta njehie na ahịrị Out-File -FilePath $MyFilenameExample01 -InputObject -Tinye $MyVocabExample2.

Ọ chọghị ịgbakwunye, ah-ah, ihe ihere.

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

Ka anyị hụ ihe merenụ. Nnukwu nlele ederede - mana otu esi ebupụ ya azụ? Ekwesịrị m iwebata ụfọdụ ụdị nkewa ederede, dị ka rịkọm?

Na n'ikpeazụ ị ga-enweta a "comma-separated values ​​(CSV) faịlụ A Kwụsị ichere.
#

$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 

Dị ka ị nwere ike ịhụ n'ụzọ dị mfe, MS anaghị ekewa ya karịsịa site na mgbagha ya; maka usoro yiri nke ahụ, n'otu oge -FilePath na-eji, na ọzọ -Path.

Tụkwasị na nke ahụ, na faịlụ nke atọ, asụsụ Russian kwụsịrị, na faịlụ nke anọ ọ tụgharịrị ... nke ọma, ihe mere. #Ụdị Sistemu.Ihe[] 00
# "Ọgụgụ"," Ogologo "," Ogologo Ogologo "," ọkwa "," SyncRoot ","IsReadOnly", "IfixedSize", "Emekọrịtara"
#
Ka anyị degharịa ya ntakịrị:

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

Ọ dị ka ọ nyere aka, mana usoro ahụ anaghị amasị m.

Ọ naghị amasị m na enweghị m ike itinye ahịrị sitere na ihe n'ime faịlụ ozugbo.
Site n'ụzọ, ebe anyị malitere ide na faịlụ, anyị nwere ike ịmalite idobe ndekọ mmalite? Anyị nwere oge dị ka mgbanwe, anyị nwere ike ịtọ aha faịlụ.

N'ezie, ọ dịghị ihe ị ga-ede, ma ị nwere ike iche echiche banyere otú kacha mma na-atụgharị na ndekọ.
Ka anyị nwaa xml ugbu a.

Ụfọdụ 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

Mbupu na xml nwere ọtụtụ uru - ịgụpụta ihe, mbupụ nke ihe niile, na enweghị mkpa ịme ihe elu.

Ka anyi nwalee gụọ faịlụ xml.

Obere ọgụgụ si xml

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

Ka anyị laghachi n'ọrụ ahụ. Anyị na-ede faịlụ ule, gụọ ya, usoro nchekwa ahụ doro anya, ọ bụrụ na ọ dị mkpa, ị nwere ike ide ihe nchịkọta faịlụ dị iche iche maka ịgbakwunye na ihichapụ ahịrị.

Ka m chetara gị na ọrụ ahụ bụ ime obere bot ọzụzụ.

Usoro ọrụ: M na-eziga iwu "ihe atụ" na bot, bot na-ezigara m okwu na ederede na-akpaghị aka, na mgbe 10 sekọnd na-eziga m nsụgharị na ikwu okwu. Anyị maara ka esi agụ iwu, anyị ga-achọkwa ịmụta ka esi ahọrọ na elele proxies na-akpaghị aka, wee tọgharịa ọnụọgụ ozi ka echefuru echefu.

Ka anyị kwupụta ihe niile ekwuru na mbụ dị ka ihe na-adịghị mkpa, jiri txt na csv kwuo ihe atụ ndị na-adịghị mkpa ugbu a, wee chekwaa faịlụ ahụ dị ka ụdị B106.

Ee, ee. Ka anyị ziga ihe na bot ọzọ.

6. Zipụ site na ọrụ na ndị ọzọ

Tupu ịhazi nnabata, ịkwesịrị ịmepụta ọrụ maka izipu "opekata mpe ihe" na-abụghị ozi nnwale.

N'ezie, na ihe atụ anyị ga-enwe nanị otu izipu na naanị otu nhazi, ma gịnị ma ọ bụrụ na anyị kwesịrị ime otu ihe ahụ ọtụtụ ugboro?

Ọ dị mfe ide ọrụ. Yabụ, anyị nwere ụdị ihe na-agbanwe agbanwe $MyVocabExample4AsArray, gụọ site na faịlụ ahụ, n'ụdị nhazi nke ihe ruru ihe abụọ.
Ka anyị gaa gụọ.

N'otu oge ahụ, anyị ga-emeso elekere; anyị ga-achọ ya ma emechaa (n'eziokwu, na ihe atụ a, anyị agaghị achọ ya :)

Ụfọdụ koodu #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
}

Dị ka ị nwere ike ịhụ n'ụzọ dị mfe, ọrụ ahụ na-akpọ $MyToken na $MyChatID, bụ ndị nwere koodu siri ike na mbụ.

Ọ dịghị mkpa ime nke a, ma ọ bụrụ na $MyToken bụ otu maka bot ọ bụla, mgbe ahụ $MyChatID ga-agbanwe dabere na nkata ahụ.

Otú ọ dị, ebe ọ bụ na nke a bụ ihe atụ, anyị ga-eleghara ya anya ugbu a.

Ebe ọ bụ na $MyVocabExample4AsArray abụghị n'usoro, ọ bụ ezie na ọ dị ka otu, mgbe ahụ. ị nweghị ike were ya naanị rịọ ogologo ya.

Ọzọkwa anyị ga-eme ihe na-enweghị ike ime - parachute bụghị dị ka koodu - were ya gbakọọ

Ụfọdụ koodu #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 na-adọrọ mmasị atụmatụ. Ka anyị kwuo na anyị chọrọ ịnata 0 ma ọ bụ 1 (anyị nwere naanị ihe abụọ n'usoro). Mgbe ị na-etinye oke 0..1, anyị ga-enweta "1"?
mba - anyị agaghị enweta ya, anyị nwere ihe atụ pụrụ iche Ihe atụ 2: Nweta ọnụọgụ ọnụọgụ n'etiti 0 na 99 Get-Random - Kacha 100
Ya mere, maka 0..1 anyị kwesịrị ịtọ nha 0..2, na ọnụ ọgụgụ kachasị elu = 1.

7. Ịhazi ozi na-abata na ogologo kwụ n'ahịrị

Ebee ka anyị kwụsịrị na mbụ? anyị nwere mgbanwe enwetara $MyMessageGet
na $Content4Pars01 nwetara site na ya, nke anyị nwere mmasị na ihe nke Content4Pars01.result array.

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

Ka anyị zipu bot /message10, /message11, /message12,/okwu na ọzọ /okwu na /hello.
Ka anyị hụ ihe anyị nwetara:

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

Ka anyị gafee ihe niile natara wee zipụ nzaghachi ma ọ bụrụ na ozi ahụ bụ / okwu
ikpe nke ịrụ, ihe ụfọdụ na-akọwa dị ka ọ bụrụ-elseif, na-akpọ na powershell site na mgba ọkụ. N'otu oge ahụ, koodu dị n'okpuru na-eji igodo -wildcard, nke na-enweghị isi na ọbụna na-emerụ ahụ.

Ụfọdụ koodu #7.1

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

Ka anyị mee edemede ahụ ugboro abụọ. Anyị ga-enweta otu okwu ahụ ugboro abụọ maka mgbalị igbu mmadụ ọ bụla, karịsịa ma ọ bụrụ na anyị mehiere na mmejuputa iwu nke random.

Ma kwụsị. Anyị ezipụghị/okwu ọzọ, yabụ gịnị kpatara a na-ahazi ozi ahụ ọzọ?

Ahịrị maka izipu ozi na bot nwere ogologo ogologo (ozi 100 ma ọ bụ 200, echere m) na a ga-ehichapụ ya na aka ya.

A na-akọwa nke a n'ezie na akwụkwọ, ma ị ga-agụ ya!

N'okwu a, anyị chọrọ paramita ?chat_id, na &oge, &limit, &parse_mode=HTML na &disable_web_page_preview=ezi adịghị mkpa ma.

Akwụkwọ maka api telegram dị ebe a
Ọ na-ekwu na ọcha na bekee:
Ihe nchọpụta nke mmelite mbụ aga-eweghachi. Ga-abụrịrị otu karịa nke kachasị elu n'etiti ndị na-achọpụta mmelite enwetaburu. Site na ndabara, mmelite na-amalite na mbụ
ekwenyeghi eweghachite mmelite. A na-atụle mmelite ozugbo enwere ike ịkpọ getUpdates iwe elu karịa update_id ya. Enwere ike ịkọwa nkwụghachi adịghị mma iji weghachite mmelite malite na -offset update site na njedebe nke kwụ n'ahịrị mmelite. A ga-echefu mmelite niile gara aga.

Ka anyị lee:

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

Ee, anyị ga-emegharị ya ma degharịa ọrụ ahụ ntakịrị. Anyị nwere nhọrọ abụọ - nyefee ozi niile na ọrụ ma hazie ya kpamkpam na ọrụ ahụ, ma ọ bụ nye naanị ID ozi wee tọgharịa ya. Dịka ọmụmaatụ, nke abụọ na-ele anya dị mfe.

Na mbụ, eriri ajụjụ "ozi niile" dị ka

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

ọ ga-adịkwa ka

$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 

Ọ dịghị onye na-amachibido gị ibu ụzọ nata ozi niile, hazie ya, yana naanị mgbe emechara arịrịọ nhazi nke ọma -> enwetara ya.

Kedu ihe kpatara o ji bụrụ ihe ezi uche dị na ịkpọ nkwenye ka emechara nhazi niile? Ọdịda ga-ekwe omume n'etiti ogbugbu, ma ọ bụrụ na maka ihe atụ nke chatbot n'efu, ịhapụ otu ozi abụghị ihe pụrụ iche, mgbe ahụ ọ bụrụ na ị na-ahazi ụgwọ ọrụ mmadụ ma ọ bụ azụmahịa kaadị, nsonaazụ ya nwere ike ịka njọ.

Ahịrị koodu abụọ ọzọ

$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. Kama nkwubi okwu

Ọrụ ndị bụ isi - ịgụ ozi, nhazigharị kwụ n'ahịrị, ịgụ site na faịlụ na ide na faịlụ na-eme ma gosipụta ya.

Ọ dị naanị ihe anọ ka a ga-eme:

  • izipu azịza ziri ezi maka arịrịọ na nkata
  • na-eziga nzaghachi na nkata ọ bụla nke agbakwunyere bot
  • na-eme koodu na akaghị
  • ịmalite bot site na windo nhazi oge.

Ọrụ ndị a niile dị mfe ma enwere ike ịrụ ya ngwa ngwa site n'ịgụ akwụkwọ gbasara paramita dị ka
Set-ExecutionAtumatu anaghị egbochi ya yana -nfefe iwu mmezu
okirikiri nke ụdị

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

Ekele dịrị onye ọ bụla gụrụ akwụkwọ.

isi: www.habr.com

Tinye a comment