آموزش ساخت ربات تلگرام با پایتون
در این آموزش با استفاده از کتابخانه تلتون (Telethon) در پایتون، انواع دستورات تلگرام را پیادهسازی میکنیم. Telethon یک کتابخونهی Asyncio هست که از طریق MTProto با تلگرام ارتباط برقرار میکند.
طریقه نصب کتابخانه تلتون در پایتون
برای نصب کتابخانه تلتون در پایتون دستور زیر را در ترمینال pycharm اجرا میکنیم
pip install telethon
در صورتی که کتابخانه تلتون در پایتون نصب باشد میتوانیم با استفاده از دستور زیر آن را به روزرسانی کنیم
pip install -U telethon
طریقه دریافت API ID و API Hash
برای دریافت API ID و API Hash ابتدا وارد آدرس زیر شده و با شماره تلفن خود Login میکنیم. دقت داشته باشید که قبل از شروع کار VPN شما فعال باشد.
my.telegram.org
سپس بر روی گزینه API Development Tools کلیک میکنیم و در ادامه در قسمت Create New Application اطلاعات خواسته شده را به صورت زیر تکمیل میکنیم و سپس دکمهی Create Application را میزنیم.
App title : Dr Sobhan Esmaeili
Short Name : Dr Sobhan Esmaeili
URL : www.Sobhan-Esmaeili.ir
Platform : Android
Description : Nothing
در ادامه تلگرام API ID و API Hash اختصاص داده شده به شما را که به صورت زیر میباشد را به شما نمایش میدهد.
ادامه
App api_id : 3507188
App api_hash : b0bf3e27ea57fdb456822910e3af703d
طریقه دریافت Token
برای دریافت Token از ربات رسمی BotFather تلگرام که برای همین منظور ایجاد شده است استفاده میکنیم. برای این منظور، عبارت BotFather را در تلگرام جستجو و از لیست ظاهر شده ربات BotFather دارای تیک آبی را انتخاب میکنیم. سپس بر روی عبارت Start کلیک میکنیم تا ربات فعال شود و لیست دستورات قابل استفاده را به ما نمایش دهد. در ادامه برای ایجاد یک بات جدید از لیست دستورات نمایش داده شده، دستور newbot/ را انتخاب میکنیم.
در واکنش به این کار ربات BotFather از ما میخواهد که یک نام را برای اختصاص به بات ارسال نماییم که ما نام Dr Sobhan Esmaeili را از طریق رابط کاربری ارسال میکنیم. سپس ربات BotFather از ما میخواهد تا یک نام کاربری را برای اختصاص به بات ارسال نماییم که ما نام کاربری Dr_Sobhan_Esmaeili_Bot را ارسال میکنیم. دقت داشته باشید که نام کاربری انتخاب شده باید به کلمه Bot ختم شود. در ادامه ربات BotFather، توکن اختصاص داده شده به بات ایجاد شده را که به صورت زیر میباشد را به ما نمایش میدهد.
Token : 5081489642:AAE-29YZEIJ5kS2U4U6ngrH8ivb5J6CxiHc
طریقهی لاگین کردن به تلگرام
برای لاگین کردن به تلگرام از دستورات زیر استفاده میکنیم
import asyncio
from telethon import TelegramClient
API_ID = “3507188”
API_Hash = “b0bf3e27ea57fdb456822910e3af703d”
Token = “5081489642:AAE-29YZEIJ5kS2U4U6ngrH8ivb5J6CxiHc”
async def main():
client = TelegramClient(“UserBot”, API_ID, API_Hash)
await client.start()
#Other Comments
await client.run_until_disconnected()
asyncio.run(main())
بعد از اجرای دستورات بالا تلگرام از ما میخواهد تا شماره تلفن خود را وارد کنیم تا کد ورود را برای ما ارسال نماید. شماره تلفن خود را با فرمت بینالمللی و به صورت زیر وارد می کنیم و منتظر میمانیم تا تلگرام کد ورود را برای ما ارسال نماید.
please enter your phone : +989122123203
سپس کد ورود دریافت شده را وارد میکنیم تا عمل لاگین اتفاق بیفتد. با توجه به اینکه اطلاعات در یک Session ذخیره میشود در دفعات بعدی نیاز به دریافت مجدد کد ورود نمیباشد.
please enter the code you received : 19777
گرفتن لیست کاربرها، رباتها، گروهها و کانالها
import asyncio
from telethon import TelegramClient
API_ID = 3507188
API_Hash = “b0bf3e27ea57fdb456822910e3af703d”
Bot_Token = “5081489642:AAE-29YZEIJ5kS2U4U6ngrH8ivb5J6CxiHc”
async def main():
client = TelegramClient(“UserBot”, API_ID, API_Hash)
await client.start()
dialogs = await client.get_dialogs(limit=10, ignore_pinned=True)
Users = []
Bots = []
Groups = []
Channels = []
for dialog in dialogs:
title = dialog.title
if getattr(dialog.entity,’bot’, None):
Bots.append(title)
elif dialog.is_group:
Groups.append(title)
elif dialog.is_channel:
Channels.append(title)
else:
Users.append(title)
print(f”Users List:{Users}”)
print(f”Bots List:{Bots}”)
print(f”Groups List:{Groups}”)
print(f”Channels List:{Channels}”)
await client.run_until_disconnected()
asyncio.run(main())
ارسال لینک و فایل (فایل عکس، فایل صوتی، فایل تصویری)
import asyncio
from telethon import TelegramClient
API_ID = 3507188
API_Hash = “b0bf3e27ea57fdb456822910e3af703d”
Bot_Token = “5081489642:AAE-29YZEIJ5kS2U4U6ngrH8ivb5J6CxiHc”
async def main():
client = TelegramClient(“UserBot”, API_ID, API_Hash)
await client.start()
#Send Link
link = “https://www.sobhan-esmaeili.ir/”
await client.send_message(“join_it_department”, link, link_preview=True)
#Send File (Picture)
await client.send_message(“join_it_department”, file=”Flowers/Flower.jpg”)
#Send File (Music)
await client.send_message(“join_it_department”, file=”Music/Music.mp3″)
#Send File (Picture and Music Together)
await client.send_message(“join_it_department”, force_document=True, file=[“Flowers/Flower.jpg”, “Music/Music.mp3”])
await client.run_until_disconnected()
asyncio.run(main())