Menulis bot telegram dengan python menggunakan library telebot bagian 2

Halo semuanya! Ini adalah bagian kedua dari artikel di mana saya akan mencurahkan waktu untuk mengirim permintaan dan server telegram. Jika orang lain belum melihat bagian pertama, maka saya sarankan untuk membacanya . Bagian ketiga kemungkinan besar akan menjelaskan cara bekerja dengan database. Nah, jika Anda lagi memiliki pertanyaan, maka tulis kepada saya di telegram: dimagorovtsov

Apa itu pesan?


Mungkin banyak yang menulis bot di artikel saya sebelumnya menanyakan pesan apa dan mengapa, misalnya, untuk mengirim pesan, kita perlu menentukan message.chat.id di parameter fungsi send_message? Untuk mengetahuinya, mari kita tampilkan pesan di konsol:

@bot.message_handler(commands=['start']) def start(message): print(message) 

Sekarang ketika kita memasukkan perintah / start , bot kami mengirimkan sejumlah besar informasi. Yang kami dapatkan sekarang adalah respons json. Json adalah format sederhana untuk menyimpan data terstruktur. Semuanya ditampilkan dalam format: 'key': value. Mari kita lihat apa yang saya dapat:

 { 'content_type':'text', 'message_id':573, 'from_user':{ 'id':687595402, 'is_bot':False, 'first_name':'Dmitry', 'username':'dimagorovtsov', 'last_name':'Gorovtsov', 'language_code':'ru' }, 'date':1565206363, 'chat':{ 'type':'private', 'last_name':'Gorovtsov', 'first_name':'Dmitry', 'username':'dimagorovtsov', 'id':687595402, 'title':None, 'all_members_are_administrators':None, 'photo':None, 'description':None, 'invite_link':None, 'pinned_message':None, 'sticker_set_name':None, 'can_set_sticker_set':None }, 'forward_from_chat':None, 'forward_from':None, 'forward_date':None, 'reply_to_message':None, 'edit_date':None, 'media_group_id':None, 'author_signature':None, 'text':'/start', 'entities':[ <telebot.types.MessageEntity object at 0x03807F50> ], 'json':{ 'message_id':573, 'from':{ 'id':687595402, 'is_bot':False, 'first_name':'Dmitry', 'last_name':'Gorovtsov', 'username':'dimagorovtsov', 'language_code':'ru' }, 'chat':{ 'id':687595402, 'first_name':'Dmitry', 'last_name':'Gorovtsov', 'username':'dimagorovtsov', 'type':'private' }, 'date':1565206363, 'text':'/start', 'entities':[ { 'offset':0, 'length':6, 'type':'bot_command' } ] } } 

Misalnya, dari semua informasi ini kami ingin mendapatkan id obrolan tempat saya mengirim pesan. Untuk melakukan ini, buka kunci obrolan.

Minta:

 print(message.chat) 

Jawabannya adalah:

 {'type': 'private', 'last_name': 'Gorovtsov', 'first_name': 'Dmitry', 'username': 'dimagorovtsov', 'id': 687595402, 'title': None, 'all_members_are_administrators': None, 'photo': None, 'description': None, 'invite_link': None, 'pinned_message': None, 'sticker_set_name': None, 'can_set_sticker_set': None} 

Lihat, kunci obrolan memiliki beberapa kunci lagi: first_name, last_name, nama pengguna ... dan masing-masing memiliki nilai sendiri. Sekarang mari kita beralih ke kunci id:

 print(message.chat.id) 

Seperti yang Anda lihat, untuk mendapatkan nilai yang diinginkan, Anda hanya perlu menuliskan nama kunci melalui titik. Sekarang lihat respons dari server:

 687595402 

Semuanya berjalan sebagaimana mestinya! Kami mendapat id obrolan, persis seperti yang kami inginkan! Sekarang dapatkan nama pengirimnya. Di sini, seperti yang Anda perhatikan, Anda perlu menggunakan kunci from_user .

Minta:

 print(message.from_user) 

Jawabannya adalah:

 {'id': 687595402, 'is_bot': False, 'first_name': 'Dmitry', 'username': 'dimagorovtsov', 'last_name': 'Gorovtsov', 'language_code': 'ru'} 

Sekarang kita mendapatkan nilai kunci first_name :

 print(message.from_user.first_name) 

Yah, itu dia! Dalam beberapa detik kami bisa mendapatkan id obrolan dan nama saya di telegram. Dan lagi, bagi mereka yang tidak mengerti:



Untuk mendapatkan nilai kunci first_name, pertama-tama kita harus beralih ke kunci obrolan, dan hanya kemudian ke first_name!

Sekarang lihat, untuk mengirim pesan ke obrolan apa pun kita perlu menentukan beberapa parameter dalam fungsi send_message. Parameter pertama adalah chat_id, id obrolan itu sendiri. Yang kedua adalah teks, teks pesan. Dan Anda dapat menebaknya, alih-alih menulis message.chat.id, kami dapat menulis data kami! Ini adalah bagaimana Anda dapat mengirim pesan kepada diri sendiri jika Anda menentukan id Anda di parameter:

 bot.send_message(< id>, ' ') 

Nah, ketika kita menulis message.chat.id, maksud kami bot akan mengirim pesan ke chat dari mana ia dipanggil.

Kesimpulan


Yah, itu saja! Saya harap Anda mengerti cara menerima data dari server, memprosesnya dan menggunakannya jika perlu. Terima kasih atas perhatian anda

Source: https://habr.com/ru/post/id462905/


All Articles