Fa'ata'ita'iga mo se pusa telegrama faigofie mo tamaiti a'oga i vasega 7-9 fa'aoga Powershell

I le taimi o talanoaga ma se uo, na faafuasei ona ou iloa o tamaiti i vasega 8-10 i la latou aoga e le o aoaoina i polokalame. Word, Excel ma mea uma. Leai se logo, e oo lava ia Pascal, e oo lava i le VBA mo Excel.

Sa ou matua faateia, tatala le Initaneti ma amata faitau -
O se tasi o galuega a se aʻoga faʻapitoa o le faʻalauteleina lea o aʻoaʻoga o se tupulaga fou e fetaui ma tulaga o le sosaiete faʻamatalaga i lona tulaga o le atinaʻe ma le olaga.
O lenei kosi o le a mafai ai e tamaiti aʻoga ona faʻamalosia i le faʻataʻitaʻiga o latou malamalama i faʻavae faʻavae o le gagana polokalame Pascal. (mai le polokalame a nisi faleta'alo mo le 2017)

I le faaiuga, na ou filifili e faʻaalu ni nai itula ma tusi se faʻataʻitaʻiga o le "faʻafefea ona fai se bot faigofie mo tamaiti aoga."

I lalo ifo o le tipi o le auala e tusi ai se isi bot faigofie i Powershell ma faʻaogaina e aunoa ma se webhook, IP paʻepaʻe, tuʻufaʻatasiga tuʻufaʻatasia, faʻapipiʻiina masini masini i le ao, ma isi mea - i luga ole PC masani ile fale ma Windows masani.

TLDR: O le isi tala le manaia ma le kalama ma mea moni sese, leai se mea e faitau, leai se malie, leai ni ata.

E leai se mea fou i totonu o le tusiga, toetoe lava o mea uma na tusia muamua ua uma ona i luga o Habré, mo se faʻataʻitaʻiga i tusiga Fa'atonuga: Fa'afefea ona faia ni bots i Telegram и Telegram bot mo le pule o le polokalama.
E le gata i lea, o le tusiga ua faʻaaogaina ma le loto i ai ina ia aua neʻi faʻasino i tusitusiga faʻaaoaoga i taimi uma. E leai ni faʻamatalaga i le Gang 4, PowerShell Deep Dives poʻo, fai mai, The 5 Pillars of the AWS Well-Architected Framework i le tusitusiga.

Nai lo o se faatomuaga, e mafai ona e faamisi

Lagona le saoloto e faamisiI le 2006, na tatalaina ai e Microsoft le PowerShell 1.0 mo le Windows XP, Vista, ma le Server 2003 i lena taimi. I nisi o auala, na suia ai mea e pei o cmdbat scripts, vb scripts, Windows Script Host ma JScript.

E oo lava i le taimi nei, o le PowerShell e mafai ona naʻo le isi laasaga pe a uma le Logo filifiliga, nai lo le faʻaaogaina pea o Delphi (poʻo se mea e matua atu), e ui lava i le i ai o faʻamau, vasega, galuega, MS GUI valaau, Git tu'ufa'atasiga ma isi.

O le Powershell e seasea faʻaaogaina; e mafai ona e faʻafeiloaʻi i le tulaga o le PowerShell Core, VMware vSphere PowerCLI, Azure PowerShell, MS Exchange, Desired State Configuration, Avanoa i luga ole laiga ole PowerShell ma le sefulu ma le sili atu o polokalame ma galuega e seasea fa'aaogaina. Atonu o le a ia maua se matagi lona lua ma le tatalaina WSL2, ae e le sa'o.

E tolu foʻi faʻamanuiaga tetele a le Powershell:

  1. E faigofie lava, e tele tusitusiga ma faʻataʻitaʻiga e uiga i ai, ma e oʻo lava i le gagana Rusia, mo se faʻataʻitaʻiga, o se tusiga e uiga i Foreach - mai le tusi PowerShell loloto - e uiga i le eseesega () ma {}
  2. E alu o ia ma le faatonu ISE, fa'atasi ma Windows. O lo'o i ai fo'i se ituaiga fa'a-debugger iina.
  3. E faigofie ona valaau mai ai vaega mo le fausiaina o se ata fa'ata.

0. Sauniuniga.

Matou te manaʻomia:

  • Windows PC (E iai la'u Windows 10)
  • Le itiiti ifo o se ituaiga avanoa Initaneti (e ala i le NAT mo se faʻataʻitaʻiga)
  • Mo i latou e faʻatapulaʻaina le avanoa i telefoni - faʻapipiʻi ma faʻapipiʻi freegate i totonu o le masini, i nisi tulaga faigata, faʻatasi ai ma le Symple DNS Crypt
  • O lo'o i ai se tagata fa'atau telefoni o lo'o galue i lau telefoni
  • Malamalama i mea autu - o le a le fesuiaiga, array, loop is.

Tatala ma faitau tala - Fa'atonuga: Fa'afefea ona faia ni bots i Telegram и Telegram bot mo le pule o le polokalama

1. Tatou faia se isi su'ega bot.

Talu ai ua uma ona iloa e tagata uma lenei mea, ma ua uma ona tupu, e mafai foi ona e faamisiE pei ona taʻua i le tusiga i luga - Muamua, o se bot mo Telegram - o loʻo faʻaauau pea le talosaga i lou itu ma faia talosaga ile Telegram Bot API. E le gata i lea, o le API e manino - e maua e le bot se URL patino ma faʻamaufaʻailoga, ma tali Telegram ma se mea JSON.

Faʻafitauli fesoʻotaʻi: afai i se auala le iloa e te ave ai se code mai se mea JSON ma tuʻuina atu mo le faʻataunuʻuina (e le o le faʻamoemoe), o le a faʻatinoina le code mo oe.

O le faagasologa o le foafoaga o loʻo faʻamatalaina i tala e lua o loʻo i luga, ae ou te toe fai atu: i se telefoni matou te tatalaina fesoʻotaʻiga, suʻe @botfather, taʻu atu ia te ia / newbot, fatuina se bot Botfortest12344321, faʻaigoa Mynext1234bot, ma maua se feʻau ma se ki tulaga ese o le fomu 1234544311:AbcDefNNNNNNNNNNNNNNNN

Tausia le ki ma aua le tuʻuina atu!

Ona mafai lea ona e faʻatulagaina le bot, mo se faʻataʻitaʻiga, faʻasaina le faʻaopoopoina i vaega, ae i laasaga muamua e le manaʻomia.

Sei o tatou fesili ia BotFather mo le "/mybot" ma fetuunai tulaga pe a tatou le fiafia i se mea.

Sei o tatou toe tatalaina le fesoʻotaʻiga, saili @Botfortest12344321 iina (e faʻatagaina le amata suʻesuʻega ma @), kiliki "amata" ma tusi i le bot "/ Mamalu i robots." E manaʻomia le / faʻailoga, e le manaʻomia ni upusii.
O le bot, ioe, o le a le taliina se mea.

Sei o tatou siaki ua faia le bot ma tatala.

api.telegram.org/bot1234544311:AbcDefNNNNNNNNNNNNNN/getMe
lea 1234544311:AbcDefNNNNNNNNNNNNNN o le ki lea na maua muamua,
ma maua se laina pei
{"oke":true,"result":{""}}

O loʻo ia i matou le fuaitau faalilolilo muamua (faʻailoga). O lenei e tatau ona tatou suʻeina le numera faalilolilo lona lua - le ID o le talatalanoaga ma le bot. O talatalanoaga taʻitasi, vaega, ma isi e taʻitoʻatasi ma e iai lana lava numera (o nisi taimi e faʻaititia - mo vaega tatala). Ina ia mafai ona maua lenei numera, matou te manaʻomia le talosaga i le browser (o le mea moni, e le o se mea e manaʻomia i le browser, ae mo se malamalama sili atu e mafai ona e amata i ai) le tuatusi (lea 1234544311:NNNNNNNNNN o lau faʻailoga

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

ma maua se tali pei

{"oke":true,"result":[{"update_id":...,... tālatala":{"id":123456789

Matou te manaʻomia chat_id.

Sei o tatou siaki e mafai ona tatou tusi i le talatalanoaga ma le lima: valaau le tuatusi mai le browser

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

Afai e te mauaina se feʻau mai se bot i lau talatalanoaga, lelei, e te alu i le isi laasaga.

O lenei auala (e ala i le browser) e mafai ona e siaki i taimi uma pe o iai ni faʻafitauli i le soʻotaga faʻatupu, pe afai e natia se mea i se mea ma e le aoga.

O mea e tatau ona e iloa a'o le'i fa'aauau lau faitau

Telegram e tele ituaiga o talatalanoaga faʻavae (tatala, tapuni). Mo nei talatalanoaga, o nisi o galuega (mo se faʻataʻitaʻiga, id) e ese, lea o nisi taimi e mafua ai ni faʻafitauli.

Sei o tatou manatu o le faaiuga o le 2019, ma e oo lava i le toa o lo tatou taimi, le lauiloa Man-Orchestra (pule, loia, faʻamatalaga faʻapitoa faʻapitoa, polokalame ma toetoe lava MVP) Evgeniy V. faʻavasegaina le $i fesuiaiga mai se array, ua iloa matasele, vaai i le isi lua tausaga o le a pulea Chocolatey, ona Fa'agasologa tutusa ma le PowerShell и Mo Ta'itasi-meafaitino Fa'atasi o le a oo mai.

1. Matou te mafaufau i mea o le a faia e le matou bot

E leai ni ou manatu, sa tatau ona ou mafaufau. Ua uma ona ou tusia se bot-notebook. Ou te leʻi manaʻo e fai se bot "e auina atu se mea i se mea." Ina ia faʻafesoʻotaʻi i Azure e te manaʻomia se credit card, ae o fea e maua mai ai e le tamaititi aoga? E tatau ona maitauina o mea uma e le leaga tele: o ao autu e tuʻuina atu se ituaiga taimi o suʻega mo le leai o se totogi (ae e te manaʻomia pea se numera kata aitalafu - ma e foliga mai o se tala o le a toesea mai ai. Ou te le manatua pe na toe faafoi mai mulimuli ane.)

A aunoa ma AI ML e le manaia tele le faia o se bot-poor-poet-lalaga.

Na ou filifili e fai se pusa e faamanatu mai ai ia te au (pe leai foi) upu Igilisi mai le lomifefiloi.
Ina ia aloese mai le faʻaogaina o faʻamaumauga, o le lomifefiloi o le a teuina i se faila faila ma faʻafouina ma le lima.
I lenei tulaga, o le galuega o le faʻaalia lea o faʻavae o le galuega, ae le o le faia o se vaega maeʻa.

2. Taumafai o le a ma pe faapefea mo le taimi muamua

Sei o tatou faia se faila C:poshtranslate
Muamua, se'i o tatou va'ai po'o le a le ituaiga powershell o lo'o ia i tatou, se'i tatou fa'alauiloa le ISE e ala ile amataga-tafe
fa'ailoga malosi
pe su'e le Powershell ISE i polokalame fa'apipi'i.
A maeʻa le faʻalauiloaina, o le masani masani "se ituaiga o faatonu" o le a tatalaina; afai e leai se faʻamatalaga, ona mafai lea ona e kiliki i taimi uma "File - fatu fou".

Se'i o tatou va'ai i le fa'asologa o le powershell - tusi i totonu o le vaega o tusitusiga:

get-host 

ma fetaomi F5.

Powershell o le a ofo atu e teu - "O le tusitusiga o le a e tamoe e faʻasaoina.", matou te malilie, ma sefe le faila mai le powershell ma le igoa i le C: poshtranslate myfirstbotBT100.

A maeʻa le faʻalauiloaina, i le faʻamalama o tusitusiga pito i lalo tatou te maua ai se laulau faʻamaumauga:

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

E i ai la'u mea 5.1, ua lava lena. Afai e iai sau Windows 7/8 tuai e leai se mea tele - e ui o le PowerShell e manaʻomia le faʻafouina i le version 5 - eg. faatonuga.

Type Get-Date i le laina o le poloaiga i lalo, lolomi Enter, vaʻai i le taimi, alu i le pusa aʻa ma le poloaiga
cd
ma faʻamama le lau i le cls command (leai, e te le manaʻomia le faʻaogaina o le rm)

Sei o tatou siaki le mea e aoga ma pe faʻafefea - seʻi o tatou tusia e le o le code, ae lua laina, ma taumafai e malamalama i mea latou te faia. Se'i o tatou fa'amatala le laina ma le get-host ma le # fa'ailoga ma fa'aopoopo sina mea itiiti.

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

(O le mea e manaia ai, o le lisi o le faʻasologa o tulafono i lalo o le Habré e luasefululua filifiliga - ae le o iai le Powershell. Dos o loʻo i ai. Perl o loʻo i ai.)

Ma sei o tatou faʻatautaia le code e ala i le oomi F5 poʻo ">" mai le GUI.

Matou te maua le faʻatinoga o loʻo i lalo:

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

Sei o tatou vaʻavaʻai i nei laina e lua ma nisi o mea manaia ina ia tatou le toe foʻi i lenei mea i le lumanaʻi.

E le pei o Pascal (ma e le gata), o le PowerShell lava ia e taumafai e fuafua poʻo le a le ituaiga e tuʻuina atu i se fesuiaiga; nisi faʻamatalaga e uiga i lenei mea o loʻo tusia i le tusiga Polokalama a'oa'oga ile taina i gagana fa'apolokalame
O le mea lea, e ala i le fatuina o se fesuiaiga o le $TimeNow ma tuʻuina atu i ai le tau o le aso ma le taimi o loʻo iai nei (Get-Date), e le tatau ona tatou popole tele pe o le a le ituaiga faʻamatalaga o le ai ai iina.

E moni, o lenei valea atonu e tiga mulimuli ane, ae o lena mea mo se taimi mulimuli ane. I lalo ifo o le tusitusiga o le ai ai se faʻataʻitaʻiga.
Sei o tatou vaai po o le a le mea na tatou maua. Tatou fa'atino (i luga o le laina fa'atonu)

$TimeNow | Get-member

ma maua se itulau o tusitusiga e le mafai ona malamalama i ai

Fa'ata'ita'iga o le numera o tusitusiga e le malamalama 1

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

E pei ona mafai ona e vaʻaia, o se fesuiaiga o le ituaiga TypeName: System.DateTime ua faia ma le tele o metotia (i le uiga o le mea e mafai ona tatou faia i lenei mea fesuiaʻi) ma meatotino.

Tatou valaau $TimeNow.DayOfYear - tatou maua le numera o le aso o le tausaga.
Tatou valaau $TimeNow.DayOfYear | Get-Member - matou te maua TypeName: System.Int32 ma se vaega o metotia.
Tatou valaau $TimeNow.ToUniversalTime() - ma maua le taimi ile UTC

Debugger

O nisi taimi e tupu e manaʻomia le faʻatinoina o se polokalame i se laina patino ma vaʻai i le tulaga o le polokalame i lena taimi. Mo lenei fa'amoemoe, o lo'o iai le galuega Debug a le ISE - toggle break point
Tuu se mea malolo i se mea i le ogatotonu, tamomoe laina nei e lua ma vaai pe faape'i foliga o le malologa.

3. Malamalama i fegalegaleaiga ma le Telegram bot

Ioe, e sili atu tusitusiga ua tusia i luga o fegalegaleaiga ma le bot, ma getpush uma ma isi, ae o le mataupu o le talitonuga e mafai ona mafaufauina filifiliga.

I la matou tulaga e manaʻomia:

  • Aoao e lafo se mea i fetusiaiga
  • Aoao e maua se mea mai fetusiaiga

3.1 Aoaoina e auina atu se mea i fetusiaiga ma maua mai ai

Laititi code - vaega 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

ma i totonu o le Russian Federation i le taimi nei matou te maua ai le mea sese Le mafai ona faʻafesoʻotaʻi i le server mamao.

Pe matou te le mauaina - faʻalagolago i le telefoni feaveaʻi ma pe o loʻo faʻatulagaina le sui ma galue
Ia, pau lava le mea o totoe o le faʻaopoopoina o se sui. Faamolemole ia matau o le fa'aaogaina o se sui e le'i fa'ailogaina ma e masani ona fa'a'ole'ole e matua'i mata'utia mo lou soifua maloloina.

O le galuega o le sailia o se sui faigaluega e le faigata tele - o le tele o faʻasalalauga http faʻasalalau e galue. Ou te manatu o le lona lima na aoga mo au.

Syntax fa'aaoga sui:

Invoke-WebRequest -Uri $URL4SEND -Proxy $MyProxy

Afai e te mauaina se feʻau i lau talatalanoaga ma se bot, ona lelei lea o mea uma, e mafai ona e faʻaauau. Afai e leai, fa'aauau le debugging.

E mafai ona e va'ai i le mea e liliu i ai lau manoa $URL4SEND ma taumafai e talosagaina i totonu ole su'esu'ega, pei o lenei:

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

3.2. Na matou aʻoaʻoina pe faʻafefea ona tusia "se mea" i talatalanoaga, o lea seʻi o tatou taumafai e faitau i ai

Se'i fa'aopoopo 4 isi laina ma va'ai po'o a mea o lo'o i totonu e ala i | maua-tagata

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

O le mea sili ona manaia ua tuʻuina mai ia i matou

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

Sei o tatou vaai po o le a le mea oi totonu ia i latou:

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

Afai e aoga mea uma mo oe, o le ae mauaina se laina umi e pei o:

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

O le mea e lelei ai, i totonu o le tala na faʻasalalau muamua Telegram bot mo le faʻatonuina o lenei laina (ioe, e tusa ai ma le $MyMessageGet.RawContent | maua-tagata o le System.String), ua uma ona talepeina.

4. Fa'agasolo mea e te mauaina (ua uma ona matou iloa pe fa'afefea ona lafo se mea)

E pei ona uma ona tusia iinei, o mea e sili ona manaʻomia o loʻo taoto i totonu. Sei o tatou tilotilo totoa i ai.

Muamua, o le a matou tusia ni nai fasi fuaitau i le bot mai le upega tafaʻilagi poʻo le telefoni

/message1
/message2
/message3

ma va'ai ile su'esu'ega ile tuatusi na faia ile $URLGET fesuiaiga.

O le a tatou vaʻai i se mea e pei o:

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

O le a lea mea? O nisi mea lavelave mai fa'asologa o mea o lo'o i ai se fa'amatalaga fe'au fa'ai'uga, fa'amatalaga fa'atalanoaga, fa'amatalaga tu'uina atu ma le tele o isi fa'amatalaga.

Ae ui i lea, e le manaʻomia ona tatou iloa "o le a le ituaiga o mea" - o se vaega o le galuega ua uma ona faia mo i tatou. Se'i tatou va'ai po'o a mea oi totonu:

Faitauina o feʻau maua poʻo le vaega 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. O le ā e tatau ona tatou faia i le taimi nei?

Sei o tatou sefe le faila faila i lalo ole igoa myfirstbotBT105 poʻo soʻo se mea e sili ona e fiafia i ai, sui le ulutala ma faʻaalia uma tulafono ua uma ona tusia e ala i

<#start comment 105 end comment 105#>

O lea la e tatau ona tatou filifili po o fea e maua ai le lomifefiloi (lelei, o fea - i luga o le disk i se faila) ma pe o le a le foliga.

Ioe, e mafai ona e tusia se lolomifefiloi tele sa'o i totonu o le tusitusiga o le tusitusiga, ae o le mea tonu lea i talaane o le manatu.
Sei o tatou vaʻai poʻo le a le powershell e mafai ona galue masani.
I se tulaga lautele, na te le popole po o le a le faila e galue ai, e le afaina ia i tatou.
E iai la matou filifiliga: txt (e te mafaia, ae aisea), csv, xml.
E mafai ona tatou matamata i tagata uma?Tatou vaai tagata uma.
Tatou faia se vasega MyVocabClassExample1 ma se fesuiaiga $MyVocabExample1
Ou te matauina o le vasega e tusia e aunoa ma le $

nisi 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

Sei o tatou taumafai e tusi lenei mea i faila e faʻaaoga ai fa'ata'ita'iga.

O nisi code #5.1

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

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

- ma matou maua se mea sese i luga o le laina Out-File -FilePath $MyFilenameExample01 -InputObject -Faʻaopoopo $MyVocabExample2.

E le manao e faaopoopo, ah-ah, oka se maasiasi.

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

Sei o tatou vaai po o le a le mea e tupu. Manaia tusitusiga - ae fa'afefea ona toe fa'afo'i i tua? E tatau ona ou fa'ailoaina se ituaiga o mea e tu'u eseese ai tusitusiga, e pei o koma?

Ma i le iʻuga e te maua se "faʻailoga tuʻufaʻatasia koma (CSV) faila A TUU LE FAATALI.
#

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

E pei ona faigofie ona vaʻaia, MS e leʻo faʻamaonia faapitoa i lona manatu; mo se faʻataʻitaʻiga tutusa, i se tasi tulaga -FilePath faʻaaogaina, i le isi -Path.

E le gata i lea, i le faila lona tolu na mou atu le gagana Rusia, i le faila lona fa na aliali mai ... lelei, na tupu se mea. #TYPE System.Object[] 00
# “ Faitau ”,” Umi ”, Umi “, “ Tulaga “,” SyncRoot ”, “Ua Na'o le Faitau”,” Ua FixedSize”,” Ua Faamaopoopoina”
#
Sei o tatou toe tusi teisi:

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

E foliga mai na fesoasoani, ae ou te le fiafia lava i le faatulagaga.

E faapitoa lava lo'u le fiafia e le mafai ona tu'u sa'o laina mai se mea i totonu o se faila.
I le ala, talu ona amata ona matou tusitusi i faila, e mafai ona matou amata tausia se faʻamaumauga amata? E i ai le taimi o se fesuiaiga, e mafai ona matou seti le igoa faila.

E moni, e leai se mea e tusi ai, ae e mafai ona e mafaufau i le auala sili e sui ai ogalaau.
Tatou taumafai xml mo le taimi nei.

O nisi 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

O le auina atu i fafo i le xml e tele mea lelei - mafai ona faitau, auina atu i fafo o le mea atoa, ma e le manaʻomia le faia o se uppend.

Tatou taumafai faitau le faila xml.

O sina faitauga mai le xml

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

Tatou toe foi i le galuega. Na matou tusia se faila suʻega, faitau i ai, o loʻo manino le faatulagaga o le teuina, pe a manaʻomia, e mafai ona e tusia se faila faila faila ese e faʻaopoopo ma tape laina.

Sei ou faamanatu atu ia te oe o le galuega o le faia lea o se tamai bot a'oa'oga.

Faiga o galuega: Ou te auina atu le "faʻataʻitaʻiga" poloaiga i le bot, e auina mai e le bot ia te aʻu se upu ma se faʻamatalaga filifilia, ma a maeʻa le 10 sekone e auina mai ia te aʻu se faaliliuga ma se faʻamatalaga. Matou te iloa faitau fa'atonuga, matou te fia a'oa'o fo'i pe fa'apefea ona otometi ona filifili ma siaki sui, ma toe fa'afo'i fa'ailoga fe'au i le galo.

Seʻi o tatou faʻailoa mea uma na taʻua muamua e le manaʻomia, faʻaalia faʻataʻitaʻiga le manaʻomia i le txt ma csv, ma faʻasaoina le faila o le version B106

Oi ioe. Tatou toe lafo atu se mea i le bot.

6. Auina atu mai galuega ma isi mea

Aʻo leʻi faia le faʻafeiloaʻiga, e tatau ona e fatuina se galuega mo le auina atu "a itiiti ifo o se mea" e ese mai i le suʻega feʻau.

Ioe, i le faʻataʻitaʻiga o le a naʻo le tasi le auina atu ma naʻo le tasi le gaioiga, ae faʻapefea pe a manaʻomia ona tatou faia le mea lava e tasi i le tele o taimi?

E faigofie ona tusia se galuega. O lea la, o loʻo i ai se fesuiaiga o le ituaiga mea $MyVocabExample4AsArray, faitau mai le faila, i le tulaga o se faʻasologa o le tele o elemene e lua.
Tatou o e faitau.

I le taimi lava e tasi, matou te feagai ma le uati; matou te manaʻomia mulimuli ane (o le mea moni, i lenei faʻataʻitaʻiga matou te le manaʻomia :)

O nisi code #6.1

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

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

E pei ona faigofie ona e vaʻaia, o le galuega e taʻua ai le $MyToken ma le $MyChatID, lea na faʻamaonia muamua.

E leai se mea e manaʻomia e fai ai, ma afai $MyToken e tasi mo bot taʻitasi, ona suia lea o le $MyChatID e faʻatatau i le talatalanoaga.

Ae ui i lea, talu ai o se faʻataʻitaʻiga lea, o le a tatou le amanaiaina mo le taimi nei.

Talu ai o le $MyVocabExample4AsArray e le o se laina, e ui lava e foliga tutusa ma le tasi, ona e le mafai lava ona e talia talosaga lona umi.

O le a toe faia foi se mea e le mafai ona fai - parachute e le tusa ai ma le tulafono - ave ma faitau

O nisi code #6.2

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

lē mautinoa uiga manaia. Faapea tatou te mananao e maua le 0 po o le 1 (e na o le lua elemene i le laina). Pe a setiina tuaoi 0..1, o le a tatou maua le "1"?
leai - matou te le mauaina, e iai sa matou faʻataʻitaʻiga faʻapitoa Faʻataʻitaʻiga 2: Maua se numera faʻafuaseʻi i le va o le 0 ma le 99 Get-Random -Maximum 100
O le mea lea, mo le 0..1 matou te manaʻomia le setiina o le tele 0..2, faʻatasi ai ma le numera elemene aupito maualuga = 1.

7. Fa'agaioiina o fe'au o'o mai ma le maualuga o le umi o le laina

O fea na tatou tu ai muamua? ua matou maua le fesuiaiga $MyMessageGet
ma le $Content4Pars01 maua mai ai, lea matou te fiafia i elemene o le Content4Pars01.result array

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

Tatou lafo le bot /message10, /message11, /message12, /word ma toe /word ma /hello.
Se'i tatou va'ai i mea na tatou maua:

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

Se'i o tatou su'esu'e mea uma na maua ma lafo mai se tali pe afai o le fe'au o /word
o le tulaga o le fausiaina, o le mea lea e faamatalaina e nisi e pei o se isi, e taʻua i le powershell e ala i ki. I le taimi lava e tasi, o le faʻailoga o loʻo i lalo e faʻaaogaina le -wildcard key, lea e matua le manaʻomia ma e oʻo lava i le afaina.

O nisi code #7.1

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

Se'i ta fa'alua le fa'asologa. O le a matou maua le upu tutusa faalua mo taumafaiga faʻataunuʻu taʻitasi, aemaise lava pe a matou faia se mea sese i le faʻatinoga o faʻalavelave.

Ae taofi. Matou te le'i toe auina atu / upu, aisea la ua toe fa'agasolo ai le fe'au?

O le laina mo le lafoina o feʻau i le bot e iʻu le umi (100 pe 200 feʻau, ou te manatu) ma e tatau ona kilia ma le lima.

O le mea moni o loʻo faʻamatalaina i totonu o faʻamaumauga, ae e tatau ona e faitauina!

I lenei tulaga, matou te mana'omia le ?chat_id parameter, ma le &timeout, &limit, &parse_mode=HTML ma le &disable_web_page_preview=true e le'o mana'omia.

Fa'amaumauga mo telegram api o iinei
Fai mai i le papae ma le Igilisi:
Fa'ailoa o le fa'afouga muamua e toe fa'afo'i. E tatau ona sili atu i le tasi nai lo le maualuga i totonu o faʻamatalaga o faʻafouga na maua muamua. Fa'alilolilo, fa'afouga amata i le muamua
le faʻamaonia toe fa'afouga. O se fa'afouga e manatu fa'amaonia i le taimi lava e vala'au ai getUpdates ma se faʻasalaga maualuga nai lo lona update_id. E mafai ona fa'amaoti mai le fa'afouga le lelei e toe aumai fa'afouga e amata mai i le fa'afouga -offset mai le fa'ai'uga o le laina fa'afouga. E galo uma fa'afouga muamua.

Sei o tatou tilotilo i:

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

Ioe, ma o le a matou toe setiina ma toe tusi le galuega i sina mea itiiti. E lua a matou filifiliga - pasi le savali atoa i le galuega ma faʻagasolo atoa i le galuega, pe tuʻuina atu naʻo le ID feʻau ma toe faʻafou. Mo se faʻataʻitaʻiga, o le lona lua e foliga faigofie.

I le taimi muamua, o matou "fe'au uma" e foliga mai

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

ma o le a foliga mai

$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 

E leai se tasi e faʻasaina oe e te mauaina muamua feʻau uma, faʻatautaia, ma naʻo le maeʻa o le faʻaogaina o le talosaga e leʻi faʻamaonia -> faʻamaonia.

Aiseā e talafeagai ai le valaʻau i le faʻamaoniga pe a maeʻa gaioiga uma? O se toilalo e mafai i le ogatotonu o le faʻataunuʻuina, ma afai mo se faʻataʻitaʻiga o se free chatbot, o le misia o se feʻau se tasi e leai se mea faʻapitoa, afai o loʻo e faʻagasolo le totogi o se tasi poʻo le fefaʻatauaiga o kata, o le iʻuga e ono sili atu ona leaga.

E lua isi laina code

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

8. Nai lo o se faaiuga

Galuega fa'avae - faitau savali, toe setiina le laina, faitau mai le faila ma le tusitusi i le faila ua mae'a ma fa'aalia.

E na'o le fa mea o totoe e fai:

  • auina atu le tali sa'o i se talosaga ile talatalanoaga
  • auina atu se tali i so'o se talanoaga na fa'aopoopo i ai le bot
  • fa'atinoina le code i totonu o se matasele
  • fa'alauiloa se bot mai le windows scheduler.

O nei galuega uma e faigofie ma e mafai ona faigofie ona ausia e ala i le faitauina o faʻamaumauga e uiga i tapulaʻa pei o
Seti-Faiga Fa'atonu le Fa'atapula'aina ma -Fa'atonu Faiga Fa'atonu
taamilosaga o le fomu

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

Faafetai i tagata uma na faitau.

puna: www.habr.com

Faaopoopo i ai se faamatalaga