پیش‌نیازهای یادگیری ساخت ربات تلگرام چیست؟

پرسیده شده
فعالیت 1271 روز پیش
دیده شده 1219 بار
0

قصد دارم پروژه نرخ ارز رو به ربات تلگرام وصل کنم. ولی یک موضوعی که هست اینه که در کمال تعجب، منبع درست یادگیری براش پیدا نکردم. از داکیومنت اصلیش هم خیلی سر در نیاوردم.

چیزی که متوجه شدم اینه که بعضی‌ها برنامه‌نویس‌ها با یک پکیج به اسم python-telegram-bot اینکار رو انجام میدن و بعضی دیگر بدون استفاده از این پکیج و به صورت مستقیم به ربات وصل میشن.

 

 

۳ تا سوال دارم.

  1. من احساس کردم که برای یادگیری ساخت ربات تلگرام یک سری پیش‌نیاز هست که ما هنوز اون‌ها رو یاد نگرفتیم! آیا این درسته؟
  2. کسی میتونه سورس خوبی در این باره به من پیشنهاد بده؟
  3. تفاوت پکیج‌های مختلف ربات تلگرامی رو یکم روشن‌تر کنه؟

 

و در نهایت این تکه کدی هست که من دیدم بدون استفاده از پکیج python-telegram-bot نوشته شده

# -*- coding: UTF8 -*-
import requests
import datetime



class BotHandler:
    def __init__(self, token):
            self.token = token
            self.api_url = "https://api.telegram.org/bot{}/".format(token)

    #url = "https://api.telegram.org/bot<token>/"

    def get_updates(self, offset=0, timeout=30):
        method = 'getUpdates'
        params = {'timeout': timeout, 'offset': offset}
        resp = requests.get(self.api_url + method, params)
        result_json = resp.json()['result']
        return result_json

    def send_message(self, chat_id, text):
        params = {'chat_id': chat_id, 'text': text, 'parse_mode': 'HTML'}
        method = 'sendMessage'
        resp = requests.post(self.api_url + method, params)
        return resp

    def get_first_update(self):
        get_result = self.get_updates()

        if len(get_result) > 0:
            last_update = get_result[0]
        else:
            last_update = None

        return last_update


token = 'YourToken' #Token of your bot
magnito_bot = BotHandler(token) #Your bot's name



def main():
    new_offset = 0
    print('hi, now launching...')

    while True:
        all_updates=magnito_bot.get_updates(new_offset)

        if len(all_updates) > 0:
            for current_update in all_updates:
                print(current_update)
                first_update_id = current_update['update_id']
                if 'text' not in current_update['message']:
                    first_chat_text='New member'
                else:
                    first_chat_text = current_update['message']['text']
                first_chat_id = current_update['message']['chat']['id']
                if 'first_name' in current_update['message']:
                    first_chat_name = current_update['message']['chat']['first_name']
                elif 'new_chat_member' in current_update['message']:
                    first_chat_name = current_update['message']['new_chat_member']['username']
                elif 'from' in current_update['message']:
                    first_chat_name = current_update['message']['from']['first_name']
                else:
                    first_chat_name = "unknown"

                if first_chat_text == 'Hi':
                    magnito_bot.send_message(first_chat_id, 'Morning ' + first_chat_name)
                    new_offset = first_update_id + 1
                else:
                    magnito_bot.send_message(first_chat_id, 'How are you doing '+first_chat_name)
                    new_offset = first_update_id + 1


if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        exit()

 

 

فایل پیوست

پیمان رشیدی
پیمان رشیدی

5 آبان 99

1
حذف شده

سلااااااااااااااااااااام، واقعا عجیبه که منبع خوب گیر نیوردی و غیرقابل باور

من سرچ کردم:

how to create telegram bot using python

و ۴ تا سایت اول بنظرم محتوا خوبی داشتن:

https://khashtamov.com/en/how-to-create-a-telegram-bot-using-python/

https://www.freecodecamp.org/news/learn-to-build-your-first-bot-in-telegram-with-python-۴c۹۹۵۲۶۷۶۵e۴/

https://djangostars.com/blog/how-to-create-and-deploy-a-telegram-bot/

https://www.toptal.com/python/telegram-bot-tutorial-python

 

داکیومنت python-telegram-bot رو هم نگاه کردم. داکومنتش حالت Reference داره و اومده کلاس ها و متدها و اجزا دیگه پکیج رو توضیح داده. اما نکته اینه که بنظرم از ۲ تا عنوان اولش:

Guides and tutorials

Examples

سریع رد شدی. زیر عنوان اول یه لینک تو متن وجود داره که آموزش خوبی داده:

“Your first Bot”

البته از logger هم دیدم استفاده کرده که شما نیاز نیست استفاده کنی. بعدا تو سرفصل crawler مبحث logger رو یادمیگیرید.

 

جواب سوال ۱) اگر این موضوعات و مفاهیم رو بلد باشی راحتتر میتونی با پکیج ربات بنویسی:

  • شی گرایی و کلاس ها (OOP)
  • بعد چیزی که تو اولین نتیجه گوگل از سرچم خوندم:

Telegram has two mutually exclusive API communication approaches:

  1. using API call getUpdates
  2. setting up a Webhook

پس تلگرام ۲ تا راه ارتباطی API داره که اولی یه تابع است که باید کارش رو یادبگیری و دومی یه مفهومه ساده است.

 

  • یادگرفتن کار کردن با اون پکیج

 

جواب سوال ۲) اون چهار تا سایتی که ساختن ربات تلگرام رو یاد دادن سورس خوبی دارن. اون پیکجی هم که معرفی کردی یه مثال و ریپو کامل داره:

https://github.com/python-telegram-bot/python-telegram-bot/tree/master/examples

 

جواب سوال ۳) من پیکج های مختلف رو نگاه نکردم ولی واضحه که این تفاوت ها رو دارن:

  • روش ارتباطشون با تگرام

using API call getUpdates

setting up a Webhook

  • چقدر خوب و استاندارد کد زدن
  • تعریف متدها و کلاس هاشون
  • ورژن پایتونی که استفاده کردن
  • از پکیج های پیشنیاز (dependency) دیگه ای استفاده کردن یا نه
  • و ممکن تفاوت های دیگه ای هم داشته باشن.

 

و این کدی که گذاشتی رو من کامل میفهمم و برای فهمیدنش این پیشنیازها رو لازم داری:

  • شی گرایی (تو این مثل بیشتر آشنایی با class, object لازمه)
  • پکیج request
  • اینکه بدونی چطور باید برای تلگرام ربات بنویسی (یعنی کلیت ربات نوشتن براش چجوریه که میتونی داکیومنت خود تلگرام رو بخونی یا کلی آموزش تو اینترنت هست و متدهای خود تگرام مثل getUpdates, sendMessage)

 

امیدوارم تونسته باشم کمکت کنم. باز اگر سوالی داشتی تو همین تاپیک بپرس.

فایل پیوست

محمدعلی رضا

توسط

محمدعلی رضا

5 آبان 99