ساخت ربات تلگرام: ۳ روش رايگان و آسان ساخت ربات تلگرام
با فراگير شدن استفاده از تلگرام بين تمام افراد جامعه و ساخت ربات تلگرام در زمينههاي مختلف، آموزش ساخت ربات تلگرام مي تواند نكته بسيار جالبي باشد. پس با ما همراه باشيد تا ۳ روش رايگان و آسان ساخت ربات تلگرام را ياد بگيريد.
۳ روش ساخت ربات تلگرام كه بسيار ساده هستند در ذيل آمدهاند:
روش اول ساخت ربات تلگرام:
چگونه يك ربات تلگرام بسازيم و گسترش دهيم؟
در اين مطلب آموزشي، قصد داريم ساخت ربات تلگرام را با استفاده از زبان برنامهنويسيPython به شما آموزش دهيم و در سرور هروكو گسترش دهيم.
در ظاهر، تلگرام نيز فقط يك برنامهي پيامرسان است مانند ساير اين قبيل برنامهها. اين برنامه خود را به عنوان برنامهاي امن، سريع، بدون تبليغات، و غيره و غيره در ميان عموم جا داده است. با وجود اين، تلگرام داراي يك ويژگي است كه مطمئنا اين برنامه را از ساير برنامههاي مشابهاش متمايز ميكند. و آن رباتها هستند!
ميتوان به رباتها اينگونه فكر كرد كه حسابهاي كاربري خودكاري هستند كه ميتوانند برخي كارها و ترفندها را برايتان انجام دهند. براي مثال، ميخواهيد يك لينك يوتيوب را در يك گروه به اشتراك بگذاريد ولي، هنوز لينكي در اختيار نداريد.
انجام اين كار بدون ربات:
الف. يوتيوب را در مرورگرتان باز ميكنيد.
ب. به دنبال ويديويي ميگرديد كه ميخواهيد به اشتراك بگذاريد.
پ. گزينهي اشتراك توسط … (share via…) را انتخاب ميكنيد (البته بايد اميدوار باشيد برنامهتان در فهرست به اشتراكگذاريّهاي يوتيوب (YouTube sharing list) وجود داشته باشد.
ت. از كاربرد گزينهي share via…منصرف ميشويد و روش سنتي كپي پيست را انتخاب ميكنيد.
ث. بعد از كپي كردن آدرس لينك، به برنامهي پيامرسانتان بر ميگرديد، و در نهايت لينك ويدئو را به اشتراك ميگذاريد.
ج. هوووررراااا … بالاخره موفق شديد
انجام اين كار با كمك ربات:
الف. شما در حال معاشرت و برقراري ارتباط با ديگران در برنامهي پيامرسانتان هستيد.
ب. @vid را به همراه كليد واژهي ويدئويي كه دنبالاش هستيد و ميخواهيد به اشتراك بگذاريد، تايپ ميكنيد.
پ. دكمهي بازگشت را ميزنيد.
ت. همين!
اين روش نسبت به روش قبل بسيار بهتر، كاربر پسندتر، و كمتر وقتگير است. اين تنها يكي از نمونههاي فراوان از قابليتهاي رباتها است.
تلگرام در اين زمينه بسيار عالي عمل كرده و به كاربران امكان داده است رباتهاي خودشان را بسازند. اگر برايتان سوال پيش آمده است كه چرا اين قضيه اينقدر برايمان جالب و جذاب است، در پاسخ ميتوانيم بگوييم به اين دليل كه آسانترين راه براي رسيدن به ايدهي رابطهاي برنامهنويسي كاربردي است.
براي ساخت اولين ربات بايد چه كارهايي انجام دهيد؟
اول از همه ( كه خيلي هم واضح است) اينكه بايد در تلگرام ثبت نام كنيد. پيشنهاد ميكنيم براي آزمودن مفاهيم اصلي و اوليهي اين كار از طريق سايت تلگرام اقدام كنيد (البته اگر به اندازهي كافي انگليسي بلد باشيد).
بعد از همهي كارهاي اوليه و باز كردن حساب و وارد كردن آن در برنامهي تلگرام،@BotFather را در برنامه جستجو و سپس آن را انتخاب كنيد و واردش شويد. در پايين صفحه روي گزينهي start كليك كنيد. سپس صفحهاي باز ميشود كه در آن بايد دستور /newbot را وارد كنيد و طبق دستورالعمل، اول نام، و سپس يك نام كاربري انحصاري را كه پايان آن كلمهي bot داشته باشد، انتخاب كنيد . پس از انجام مراحل اوليه، شما داراي:
الف. يك رمز (توكن/token) مخصوص به خود
ب. يك آدرس وب (url) رابطه برنامهنويسي كاربردي (api) تلگرام – https://api.telegram.org/bot
پ. و يك پيوند (لينك) براي ثبت اسناد و تصاوير و غيره هستيد.
بسيار عالي، اكنون اين كار انجام شد. ولي در حال حاضر، ربات شما فعلا كار خاصي برايتان انجام نميدهد.
بايد با رباتتان شروع به مكالمه كنيد. در قسمت جستجوي تلگرام، نام رباتتان را وارد نماييد. پيش از شروع مكالمه بايد دكمهي start را بزنيد. اكنون چيزي را در صفحه تايپ كنيد، مثلا “Hello”. اين پيام بسيار مهم است، زيرا بعد از آن اولين به روز رساني براي رباتتان را دريافت خواهيد كرد.
اگر اين اولين تجربهتان در ساخت APIها است، به آساني ميتوانيد با استفاده از مرورگر وبتان به خوبي اين مطلب را درك كنيد. يك تب جديد در مرورگرتان باز كنيد و URL api تلگرام زير را استفاده نماييد –
https://api.telegram.org/bot
وقتي اين URL را در مرورگرتان باز ميكنيد، به سرور تلگرام درخواست ميفرستيد، و پاسخ اين درخواست توسط JSON داده ميشود. اين پاسخ شبيه ديكشنري Python است. در اين صورت، بايد چيزي شبيه اين را مشاهده كنيد:
{"ok":true,"result":[{"update_id":523349956,
"message":{"message_id":51,"from":
{"id":303262877,"first_name":"YourName"},"chat":
{"id":303262877,"first_name":"YourName","type":"private"},"date":148
6829360,"text":"Hello"}}]}
اگر صفحهي ربات را باز كنيد و بخش روش /sendMessage را بررسي كنيد، مشاهده خواهيد كرد اين روش نيازمند دو پارامتر اضافي chat_id و text است. در بخش سرچ مرورگرتان ميتوانيد با استفاده از ? براي اولين مورد، و با استفاده از & براي موارد بعدي پارامترها را به هم متصل كنيد. ارسال پيام ممكن است به اين شكل باشد –
/sendMessage?chat_id=303262877&text=test
با جا به جاييchat_id با آنچه توسط /getUpdates به دست آورديد، سعي كنيد از طرف رباتتان پاسخي دريافت كنيد. در اين مثال، كد مورد نظر 303262877 است. انتخاب پارامتر متني هم به خودتان بستگي دارد. اين درخواست شايد شبيه اين باشد –
https://api.telegram.org/bot/sendMessage?chat_id=303262877&text=Hello
بخش برنامهنويسي (تقريبا!)
اگر از ويندوز استفاده ميكنيد و Python را نصب نداريد، ميتوانيد دانلود كنيد.
مهم نيست نسخهي 2.x را داشته باشيد يا 3.x، ولي در اين مقاله قصد داريم به عنوان مثال از 3.x استفاده كنيم.
اگر از لينوكس يا مك استفاده ميكنيد به احتمال فراوان هر دو نسخه يا حداقل نسخهي 2.x را نصب شده داريد.
مرحلهي بعد نصب پيپ است. Python 2.7.9 به بالا، و Python 3.4 به بالا نيز به طور پيش فرض داراي پيپ هستند.
همچنين در مك يا لينوكس نيز ممكن است اين برنامه به صورت نصب شده وجود داشته باشد. ميتوانيد با استفاده از دستور pip — version در ترمينال اين مسئله را بررسي كنيد.
اگر به هر دليل پيپ را نداريد، ميتوانيد آن را با استفاده از دستور زير در لينوكس دبيان نصب كنيد:
$ sudo apt-get install python-pip
بخش بد اين ماجرا اين است كه نسخههاي متفاوت Python هر كدام پيپ مخصوص به خودشان را استفاده ميكنند.
در سيستم عامل مك ميتوانيد اين دستورالعمل را از اينجا امتحان كنيد
در ويندوز، get-pip.py را دانلود كنيد، cmd را باز كنيد، به دايركتورياي برويد كه فايل را در آن ذخيره كردهايد و دستور زير را اجرا كنيد –
$ python get-pip.py
اين سختترين قسمت اين كار بود.
سپس بايد با استفاده از پيپ، بستهي درخواستها (requests package) را نصب كنيد. از دستور زير پيروي كنيد –
$ pip install requests
مرحلهي بعد اختياري است ولي كمك بزرگي خواهد بود. PyCharm را دانلود كنيد، عالي است.
ساخت ربات تلگرام: بخش برنامهنويسي
اگر مفهوم API برايتان واضح است و تمام ابزارهاي لازم را در اختيار داريد، پس وارد عمل شويد و اجازه دهيد اول، اسكريپت Python را به منظور بررسي به روز رسانيها و فرستادن پاسخ با متن دلخواهمان تهيه كنيم.
اول از همه، رباتمان بايد دنبال به روز رساني باشد. پياممان ممكن است به عنوان آخرين به روز رساني تلقي شود. با وجود اين getUpdates همهي به روز رسانيهاي ۲۴ ساعت گذشته را بر ميگرداند. پس بايد اسكريپت كوتاهي براي رسيدن به آخرين به روز رساني ايجاد كنيم.
import requests
url = "https://api.telegram.org/bot/"
def get_updates_json(request):
response = requests.get(request + 'getUpdates')
return response.json()
def last_update(data):
results = data['result']
total_updates = len(results) - 1
return results[total_updates]
ديكشنري به روز رساني شامل دو عنصر “ok” و “results” (نتايج) است. شخصا به بخش “results” علاقهمند هستيم زيرا فهرستي از همهي به روز رسانيهايي است كه رباتمان در ۲۴ ساعت گذشته دريافت كرده است.
در اينجا ميتوانيد اطلاعات بيشتري را دربارهي مجموعهي درخواستها به دست آوريد. اساسيترين مسئله اين جا است كه هر وقت به دريافت، به روز رساني، يا حذف اطلاعات در سرور نياز پيدا كنيد، ميتوانيد درخواستتان را ارسال كنيد و پاسخ دريافت نماييد. پارامتر
مرحلهي بعدي اضافه كردن ۲ تابع بيشتر است. مورد اول chat_id را از به روز رساني دريافت ميكند و مورد دوم پيام ارسال مينمايد.
def get_chat_id(update):
chat_id = update['message']['chat']['id']
return chat_id
def send_mess(chat, text):
params = {'chat_id': chat, 'text': text}
response = requests.post(url + 'sendMessage', data=params)
return response
chat_id = get_chat_id(last_update(get_updates_json(url)))
send_mess(chat_id, 'Your message goes here')
يادتان ميآيد پارامترها را به كمك “?” و “&” به هم متصل ميكرديد؟ همين كار را ميتوانيد با افزودن dict به عنوان پارامتر اختياري دوم براي درخواستهاي دريافت/ ارسال تابع انجام دهيد.
اسكريپت آماده است. با وجود اين، تا كامل شدن خيلي راه دارد. يكي از اشكالات اصلي اين است كه شما هر وقت ميخواهيد با ربات پيام ارسال كنيد بايد اسكريپت را اجرا كنيد. پس بياييد اين مشكل را حل كنيم. براي آنكه كاري كنيم رباتمان براي به روز شدن به حرف سرور گوش كند، بايد يك حلقهي رويداد ايجاد كنيم. دقيقا يك خط پايينتر از import requests روي يك خط جديد from time import sleep را اضافه كنيد.
def main():
update_id = last_update(get_updates_json(url))['update_id']
while True:
if update_id == last_update(get_updates_json(url))['update_id']:
send_mess(get_chat_id(last_update(get_updates_json(url))), 'test')
update_id += 1
sleep(1)
if __name__ == '__main__':
main()
با اينكه در اين مثال ما “timeout” (مهلت) ۱ ثانيهاي اضافه كردهايم، ولي مثال بالا فقط براي امتحان به كار ميرود زيرا از يك پولينگ (polling) كوتاه استفاده كرده است. اين مسئله براي سرورهاي تلگرام خوب نيست و بايد از آن اجتناب كرد. دو راه براي به روز رساني با api رباتتان وجود دارد – پولينگ دراز مدت يا وب هوك. با وجود اين، اگر با استفاده از روش getUpdates بدون هيچ پارامتري به دنبال به روز رساني بگرديم، بايد از پولينگ كوتاه مدت استفاده كنيم.
همزمان با شروع استفاده از حلقهي رويداد در اسكريپتمان، لازم است به پولينگ دراز مدت منتقل شويم.
براي اينكه كاري كنيم اسكريپت از پولينگ دراز مدت استفاده كند، بايد با افزودن پارامتر “ timeout” (مهلت)، اولين تابع را اصلاح كنيم.
“ timeout” به خودي خود اسكريپت را به بررسي كمترِ به روز رسانيها وا نميدارد. “ timeout” فقط وقتي كار ميكند كه هيچ به روز رساني جديدي وجود نداشته باشد. اگر ميخواهيد نشان دهيد به روز رساني خاصي از قبل مشاهده شده است، بايد پارامتر “offset” را اضافه كنيد.
def get_updates_json(request):
params = {'timeout': 100, 'offset': None}
response = requests.get(request + 'getUpdates', data=params)
return response.json()
تا اينجا رباتتان بايد به خوبي كار كند، با وجود اين اجازه دهيد كل برنامه را كمي اصلاح كنيم. ايدهي خوبي است كه تمام توابعي را كه تاكنون استفاده كردهايم، در يك مجموعه دستهبندي كنيم. بنابراين، نسخهي اصلاح شده بايد چيزي شبيه اين باشد :
import requests
import datetime
class BotHandler:
def __init__(self, token):
self.token = token
self.api_url = "https://api.telegram.org/bot{}/".format(token)
def get_updates(self, offset=None, 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}
method = 'sendMessage'
resp = requests.post(self.api_url + method, params)
return resp
def get_last_update(self):
get_result = self.get_updates()
if len(get_result) > 0:
last_update = get_result[-1]
else:
last_update = get_result[len(get_result)]
return last_update
اكنون ديگر بايد كمي دست به سر و روي رباتتان بكشيد، به تعيين برخي متغيرها بپردازيد و اندكي ادب يادش بدهيد. ميخواهيم رباتي درست كنيم كه روزي يك بار جواب سلام و احوالپرسيمان را بدهد. و البته، پاسخها هم بسته به زمان روز متفاوت باشند. اگر ميخواهيد اين اسكريپت را امتحان كنيد، بايد import datetime را به خط بعد از درخواستهاي ورود (import) و كدهاي زير را به اسكريپتتان اضافه كنيد.
greet_bot = BotHandler(token)
greetings = ('hello', 'hi', 'greetings', 'sup')
now = datetime.datetime.now()
def main():
new_offset = None
today = now.day
hour = now.hour
while True:
greet_bot.get_updates(new_offset)
last_update = greet_bot.get_last_update()
last_update_id = last_update['update_id']
last_chat_text = last_update['message']['text']
last_chat_id = last_update['message']['chat']['id']
last_chat_name = last_update['message']['chat']['first_name']
if last_chat_text.lower() in greetings and today == now.day and 6 <= hour < 12:
greet_bot.send_message(last_chat_id, 'Good Morning {}'.format(last_chat_name))
today += 1
elif last_chat_text.lower() in greetings and today == now.day and 12 <= hour < 17:
greet_bot.send_message(last_chat_id, 'Good Afternoon {}'.format(last_chat_name))
today += 1
elif last_chat_text.lower() in greetings and today == now.day and 17 <= hour < 23:
greet_bot.send_message(last_chat_id, 'Good Evening {}'.format(last_chat_name))
today += 1
new_offset = last_update_id + 1
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
exit()
از اين جا به بعد عينا هزاران راه براي شخصيسازي رباتتان وجود دارد. پيشنهاد ميكنيم ارسال برخي روشهاي رسانهاي يا افزودن دكمههاي “custom” را امتحان كنيد.
ساخت ربات تلگرام: گسترش رباتتان به سوي طبيعت وحشي!
آخرين مرحله براي آنكه رباتي واقعي داشته باشيد، گسترش آن بر روي يك سرور است. به احتمال زياد خودتان يك سرور در اختيار نداريد و تمايلي هم به خريدن آن نداريد … و نيازي هم به انجام اين كار نداريد. در حال حاضر، بسياري از روشهاي ابري وجود دارند كه ميتوانند به صورت رايگان ميزبان برنامهي شما باشند. در ادامه قصد داريم به نحوهي گسترش اين اسكريپت كوچكتان در هروكو اشاره كنيم.
اول از همه، بايد يك حساب GitHub داشته باشيد. دست به كار شويد و ثبت نام كنيد؛ اگر به طور كلي به برنامهنويسي علاقه داريد، انجام اين كار واقعا الزامي است. علاوه بر داشتن حساب GitHub، بايد نرمافزار گيت را نيز نصب كنيد.
دستور زير را در لينوكس دبيان اجرا كنيد –
$ sudo apt-get install git-all
گيت را براي مكينتاش يا ويندوز دانلود كنيد.
در هروكو ثبت نام كنيد
با استفاده از دستور زير virtualenv را نصب كنيد –
$ pip install virtualenv
اكنون بايد كمي فايلهايتان را ساماندهي كنيد. يك فولدر جديد باز كنيد، ترمينال/cmd را باز كنيد و به فولدر جديد برويد.
virtualenv را در فولدر جديد راهاندازي كنيد – تايپ كنيد
$ virtualenv my_env
نحوهي انتخاب نام واقعا مهم نيست، با وجود اين بهتر است به اندازهي كافي با مسما باشد.
به فولدر my_env برويد.
مرحلهي بعد – فضاي ذخيرهسازي gitتان را كلون (clone) كنيد. دستور زير را تايپ كنيد:
$ git clone https://github.com/yourprofilename/yourreponame
اسكريپتتان را در فولدر git clone قرار دهيد.
به فولدر my_env باز گرديد، و با استفاده از دستور زير virtualenv را راهاندازي كنيد –
ويندوز:
$ scriptsactivate.bat
لينوكس/مك:
$ source bin/activate
اگر virtualenv را با موفقيت فعال كنيد، كنسولتان به سرعت بايد با my_env آغاز به كار كند.
مرحلهي بعد – به فضاي ذخيرهسازي كلون شده برويد و يك بار ديگر با تايپ كردن دستور زير ماژول درخواستهاي Python را نصب كنيد –
$ pip install requests
مرحلهي بعدي ساخت ربات تلگرام فهرستي از وابستگيها (ديپندنسي) براي هروكو است. كار راحتي است، فقط چيزهاي زير را تايپ كنيد –
$ pip freeze > requirements.txt
يك Procfile بسازيد. در اين فايل، راجع به اينكه بايد با اسكريپتتان چه كار بكنيد بايد دستورالعملهايي را فراهم كنيد. نام آن بايد دقيقا Procfile باشد؛ و براي ويندوز نيز بايد Procfile.windows باشد. نبايد به .txt يا .py يا هر پسوند ديگري ختم شود. محتويات اين فايل بايد از قرار زير باشد (my_bot را با نام اسكريپت خود تغيير دهيد)
web: python my_bot.py
فايل __init__.py را به فولدرتان اضافه كنيد. اين فايل ميتواند خالي باشد، ولي به حال بايد در آنجا قرار بگيرد.
براي اعمال و تسريع تغييرات، مجموعهي دستورات زير را تايپ كنيد.
$ git init
$ git add .
$ git commit -m ‘short message that describe changes to commit’
$ git push -u https://github.com/yourusername/nameofrepo
مرحلهي بعدي گسترش واقعي ربات در هروكو است. به برخي دلايل، نتوانستيم با استفاده از داشبورد مرورگر وبشان اين كار را انجام دهيم. با وجود اين، استفاده از رابط خط فرمان هروكو بسيار آسان است.
در اين جا فقط مراحل مختلفي را ارائه خواهيم كرد كه براي گسترش يك نرمافزار كافي باشند. اگر از مك يا ويندوز استفاده ميكنيد ميتوانيد از اين مرحله CLI را دانلود كنيد.
اگر مانند من از سيستم عامل اوبونتو استفاده ميكنيد، اين دستورات را به كار ببريد –
$ sudo add-apt-repository "deb https://cliassets.heroku.com/branches/stable/apt ./"
$ curl -L https://cli-assets.heroku.com/apt/release.key |
$ sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install heroku
ممكن است همهي اين كارها بر روي يك دستگاه رايانه به درستي انجام شود، ولي آخرين مرحلهي آن در دستگاه ديگري به درستي انجام نشود. اگر شما هم با چنين مشكلي بر خورد كرديد، براي دريافت راهنمايي و اطلاع از ديپندنسيهاي از دست رفته، ترمينال را بررسي كنيد.
اين مجموعه دستورات را دنبال كنيد –
$ heroku login
$ heroku create
$ git push heroku master
$ heroku ps:scale web=1
$ heroku open
از اين لحظه به بعد برنامهتان بر روي سرور هروكو كار ميكند. اگر به برخي دلايل كار نكرد، با استفاده از دستورات زير logها را بررسي كنيد –
$ heroku logs --trail
از اينجا كدهاي خطا را بيابيد
با استفاده از حساب رايگان با برخي محدوديتها مواجه خواهيد شد. با وجود اين، تا الان شما رباتي داريد كه به طور كامل كار ميكند.
روش دوم ساخت ربات تلگرام:
ساخت ربات تلگرام با استفاده از PythonAnywhere
در حال حاضر، انفجاري از برنامههاي پيامرسان و رباتها جهان را فراگرفته است، و دليل وجود آنها نيز كاملا معلوم است. آنها راه جديد و مفيدي براي تعامل با سامانههاي رايانهاي هستند، آنها براي برنامهنويسان بسيار جالب هستند، و واقعا ايجاد آنها به طور شگفتانگيزي آسان است.
اين مقاله به شما نشان ميدهد چگونه ميتوانيد با استفاده از برنامهي تلگرام يك ربات بسازيد و اجرا كنيد. تلگرام در سراسر جهان به اندازهي برنامههاي پيامرساني مانند واتساپ و اسكايپ محبوب نيست، ولي ساخت ربات تلگرام در آن بسيار آسانتر است. براي اين كار فقط به يك رايانه و همچنين يك گوشي تلفن نياز داريد كه بتوان روي آن برنامهي تلگرام را نصب كرد. وقتي كارهاي اين مرحله را به اتمام برسانيد، رباتي خواهيد داشت كه ميتواند تقريبا به شكل قابل قبولي با شما مكالمه كند.
براي اين كار از PythonAnywhere استفاده ميكنيم. شما با استفاده از حساب كاربري رايگان PythonAnywhere ميتوانيد رباتي بسازيد كه بتواند برايتان كاملا كاربردي باشد. فقط اگر كاربرهاي رباتهايتان بسيار زياد شوند – به اندازهي هزاران پيام در روز – بايد در قبال حساب كاربريتان پول پرداخت كنيد.
بنابراين، بدون گرفتاريهاي اضافه، اجازه دهيد كار را شروع كنيم!
ساخت ربات تلگرام
اولين كاري كه لازم است انجام دهيد اين است كه به تلگرام بگوييد ميخواهيد يك ربات درست كنيد. براي اين كار، به يك حساب تلگرام نياز داريد – برنامهي تلگرام را روي گوشيتان نصب كنيد و كارهاي لازم را انجام دهيد.
سپس، با “BotFather” شروع به مكالمه كنيد. اين رباتي است كه خودِ تلگرام آن را اجرا ميكند، و ساخت و ثبت رباتّها را در اين برنامه كنترل مينمايد. اگر گوشيتان اندرويد است، بايد كارهاي زير را انجام دهيد (ساير سيستم عاملها نيز تقريبا به همين شكل هستند):
الف. روي دكمهي start در پايين صفحه كليك و مكالمهاي جديد را آغاز كنيد.
ب. روي علامت ذرهبين (search) بالاي صفحه كليك كنيد.
پ. “botfather” را تايپ كنيد.
ت. روي “botfather” كليك كنيد. البته مطمئن شويد علامت تيك آبي رنگ در كنار آن وجود داشته باشد.
ث. پيام خوشامد گويي برايتان ظاهر خواهد شد.
ج. روي دكمهي “Start” كليك كنيد.
چ. “/newbot” را در صفحه انتخاب/تايپ كنيد و ارسال نماييد.
ح. در اين مرحله، تلگرام از شما ميخواهد براي رباتتان نام تعيين كنيد. براي رباتتان ميتوانيد هر نامي انتخاب كنيد.
خ. اكنون تلگرام از شما يك نام كاربري ميخواهد؛ نام كاربري بايد به همراه كلمهي bot و منحصر به فرد باشد.
د. اگر همهي اين كارها را به درستي انجام دهيد، پيامي دريافت خواهد كرد مبني بر اينكه ربات شما ساخته شده است. همراه اين پيام، اطلاعات مهمي ارسال شده است كه براي مراحل بعدي به آن نياز داريد: رمزي (توكن) كه براي دسترسي به HTTP API به آن احتياج خواهيد داشت. اين رمز (توكن) شامل مجموعهاي طولاني از اعداد و حروف است، كه شايد بين آنها علامت دو نقطه “:” هم وجود داشته باشد. براي حفظ اين اطلاعات براي مراحل بعد، بهتر است آن را در گوشيتان ذخيره كنيد و يك نسخه از آن را نيز به خودتان ايميل نماييد – ميزان امنيت آن، آنچنان فوقالعاده نيست، ولي تا وقتي مسائل شخصي و محرمانهتان را در ربات خود قرار ندهيد، ميتوان ادعا كرد كه به اندازهي كافي امنيت دارد.
بسيار خوب؛ بنابراين وضعيت ساخته شدن رباتتان را بررسي كنيد؛ البته در اين مرحله رباتتان هنوز آنچنان به حرف زدن نيفتاده است. با همان روشي كه در مورد BotFather به كار گرفتيد، با رباتتان شروع به مكالمه كنيد. اكنون با اميدواري تمام شروع به چت كردن ميكنيد، ولي وقتي روي دكمهي start كليك ميكنيد، اتفاقي نميافتد.
تعجب نكنيد. بايد يك سري كارهاي ديگر نيز انجام دهيد.
ساخت ربات تلگرام: اولين ربات ساده
در رايانهتان:
الف. توصيه ميكنيم براي اين مقالهي آموزشي يك حساب جديد PythonAnywhere بسازيد – در آينده يك وبسايت خواهيم ساخت، و چنانچه از قبل وبسايت داشته باشيد، نميخواهيم ميان اين دو دچار اشتباه شويد. شما ميتوانيد حتي با يك آدرس ايميل حسابهاي رايگان متعددي داشته باشيد، بنابراين ساختن يك حساب كاربري جديد ضرري برايتان نخواهد داشت. فقط بهتر است يك حساب رايگان ” مبتدي” بسازيد.
ب. بعد از ساختن حساب كاربري و تاييد ايميلتان از جانب PythonAnywhere، كنسول بش (Bash) را اجرا كنيد.
پ. در اين كنسول متن زير را كپي پيست كنيد و دكمهي Enter را بزنيد:
pip3.5 install --user telepot
با اين كار، كتابخانهي عاليPython telepot براي حساب كاربري PythonAnywhere شما نصب ميشود؛ اين كتابخانه برخي مشكلات و پيچيدگيهاي برقراري ارتباط را با API تلگرام پنهان ميكند. منتظر بمانيد تا اين فرايند به طور كامل انجام شود.
ت. سپس بر روي لوگوي PythonAnywhere در گوشه، بالا، سمت چپ صفحه كليك كنيد تا به داشبورد PythonAnywhere بازگرديد.
ث. در بالاي صفحه روي Files كليك كنيد.
ج. در كادر “Enter new file name” (به معني ورود نام فايل جديد) براي كد رباتتان، نامي وارد كنيد كه با “.py” پايان يابد – مثلا firstsimplebot.py – و سپس، روي دكمهي “New file” كليك كنيد.
چ. بعد از زدن دكمهي “New file”، صفحهي جديدي برايتان باز ميشود؛ اكنون، تمام كدهاي زير را كپي و در آن صفحه پيست كنيد؛ سپس، تنها كافي است رمزي (توكني) را كه پيشتر از BotFather گرفته بوديد، به جاي “YOUR_AUTHORIZATION_TOKEN” درج كنيد.
import telepot
import time
import urllib3
# You can leave this bit out if you're using a paid PythonAnywhere account
proxy_url = "http://proxy.server:3128"
telepot.api._pools = {
'default': urllib3.ProxyManager(proxy_url=proxy_url, num_pools=3, maxsize=10, retries=False, timeout=30),
}
telepot.api._onetime_pool_spec = (urllib3.ProxyManager, dict(proxy_url=proxy_url, num_pools=1, maxsize=1, retries=False, timeout=30))
# end of the stuff that's only needed for free accounts
bot = telepot.Bot('YOUR_AUTHORIZATION_TOKEN')
def handle(msg):
content_type, chat_type, chat_id = telepot.glance(msg)
print(content_type, chat_type, chat_id)
if content_type == 'text':
bot.sendMessage(chat_id, "You said '{}'".format(msg["text"]))
bot.message_loop(handle)
print ('Listening ...')
# Keep the program running.
while 1:
time.sleep(10)
ح. سپس، دكمهي “>>> Run this file” (به معني اجراي اين فايل) را در پايين صفحه كليك كنيد.
خ. كنسولي در پايين صفحه ظاهر خواهد شد. بعد از چند لحظه، در بالا، سمت چپ كنسول “Listening …” را مشاهده خواهيد كرد.
حال به گوشي (يا به برنامهي تلگرامتان) باز گرديد. صفحهي چت با رباتتان را باز كنيد و چيزي در آن تايپ نماييد، مثلا”Hello”. اگر همهي مراحل را به درستي طي كرده باشيد، ربات به سرعت به شما پاسخ ميدهد: “You said ‘Hello'”.
چنانچه به كنسول موجود در پايين صفحهي PythonAnywhere نگاهي بيندازيد، مشاهده خواهيد كرد در آنجا اطلاعاتي دربارهي پيام ارساليتان درج شده است – شايد چيزي شبيه اين:
text private 321518746
هووورررااا!!!! اكنون شما يك ربات فعال در اختيار داريد.
اكنون اجازه دهيد بيت به بيت پيش برويم.
import telepot
import time
import urllib3
اين بيت فقط ماژولهاي پيتوني را وارد ميكند كه ميخواهيم از آن استفاده كنيم.
# You can leave this bit out if you're using a paid PythonAnywhere account
proxy_url = "http://proxy.server:3128"
telepot.api._pools = {
'default': urllib3.ProxyManager(proxy_url=proxy_url, num_pools=3, maxsize=10, retries=False, timeout=30),
}
telepot.api._onetime_pool_spec = (urllib3.ProxyManager, dict(proxy_url=proxy_url, num_pools=1, maxsize=1, retries=False, timeout=30))
# end of the stuff that's only needed for free accounts
همانطور كه اين جمله بيان ميكند، تا هنگامي به اين كار نياز داريد كه از حساب “مبتدي” PythonAnywhere استفاده ميكنيد – البته ما نيز براي اين مطلب آموزشي از همين حساب استفاده ميكنيم، ولي اگر شما بعدها مايل به استفادهي مجدد از اين كد در حساب غير رايگان هستيد، ميتوانيد آن را حذف نماييد. دليل وجود آن، اين است كه حسابهاي رايگان فقط ميتوانند به برخي وبسايتهاي خارجي خاص متصل شوند، و اين اتصالها بايد از طريق سرور پروكسي صورت گيرند. بسياري از APIها هنگام اجرا به صورت خودكار جزييات سرور پروكسي را از محيط سامانهشان جمعآوري ميكنند، ولي telepot اين كار را انجام نميدهد. اين يك مشكل تلقي نميشود، و فقط به اين معني است كه بايد كمي دقيقتر و صريحتر باشيم و خودمان از آن بخواهيم ”در اينجا از اين پروكسي استفاده كند” (use this proxy over here).
bot = telepot.Bot('YOUR_AUTHORIZATION_TOKEN')
اكنون به هستهي مركزي اين برنامه رسيدهايم. اين خط از telepot براي اتصال به سرور تلگرام استفاده ميكند.
در ادامه، تابعي را تعريف ميكنيم كه ميداند چگونه پيامها را از telepot مديريت كند.
def handle(msg):
content_type, chat
- سه شنبه ۲۹ مرداد ۹۸ | ۱۹:۰۰
- ۲۱ بازديد
- ۰ نظر