قصد دارم پروژه نرخ ارز رو به ربات تلگرام وصل کنم. ولی یک موضوعی که هست اینه که در کمال تعجب، منبع درست یادگیری براش پیدا نکردم. از داکیومنت اصلیش هم خیلی سر در نیاوردم.
چیزی که متوجه شدم اینه که بعضیها برنامهنویسها با یک پکیج به اسم python-telegram-bot اینکار رو انجام میدن و بعضی دیگر بدون استفاده از این پکیج و به صورت مستقیم به ربات وصل میشن.
۳ تا سوال دارم.
- من احساس کردم که برای یادگیری ساخت ربات تلگرام یک سری پیشنیاز هست که ما هنوز اونها رو یاد نگرفتیم! آیا این درسته؟
- کسی میتونه سورس خوبی در این باره به من پیشنهاد بده؟
- تفاوت پکیجهای مختلف ربات تلگرامی رو یکم روشنتر کنه؟
و در نهایت این تکه کدی هست که من دیدم بدون استفاده از پکیج 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()