Python3
203 subscribers
102 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
پارت ۱: آموزش ماژول python-telegram-bot

۱. معرفی ربات‌های تلگرام و کاربردهای آن‌ها

ربات‌های تلگرام ابزارهایی هستند که به کاربران امکان تعامل خودکار با سرویس‌های مختلف را می‌دهند. از ربات‌ها می‌توان برای ارسال اطلاعیه‌ها، جمع‌آوری داده‌ها، بازی‌ها و حتی فروش محصولات استفاده کرد.

۲. نصب کتابخانه python-telegram-bot

برای شروع، نیاز داریم که کتابخانه python-telegram-bot را نصب کنیم. دستور زیر را در ترمینال یا CMD وارد کنید:

pip install python-telegram-bot

۳. ایجاد ربات جدید در تلگرام و دریافت توکن

برای ساخت ربات جدید، مراحل زیر را دنبال کنید:

1. به تلگرام بروید و با @BotFather صحبت کنید.
2. دستور /newbot را ارسال کنید و دستورالعمل‌ها را دنبال کنید.
3. توکن (Token) رباتتان را دریافت کنید.

۴. نوشتن یک ربات ساده برای پاسخ به دستورات /start و /help

وارد کردن کتابخانه‌ها و تعریف توکن:

from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext

TOKEN = 'YOUR_BOT_TOKEN'

تعریف دستورات ربات:

def start(update: Update, context: CallbackContext) -> None:
update.message.reply_text('سلام! به ربات من خوش آمدید.')

def help_command(update: Update, context: CallbackContext) -> None:
update.message.reply_text('چطور می‌توانم به شما کمک کنم؟')

تعریف هندلر پیام‌ها:

برای پاسخ دادن به پیام‌های متنی کاربران، نیاز به یک هندلر پیام داریم.

def echo(update: Update, context: CallbackContext) -> None:
update.message.reply_text(update.message.text)

راه‌اندازی و اجرای ربات:

حالا باید ربات را پیکربندی کنیم تا دستورات و هندلر پیام‌ها را بشناسد و اجرا کند.

def main():
updater = Updater(TOKEN)

dispatcher = updater.dispatcher

dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(CommandHandler("help", help_command))
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))

updater.start_polling()
updater.idle()

if __name__ == '__main__':
main()

این کد رباتی ایجاد می‌کند که به دستورات /start و /help پاسخ می‌دهد و هر پیام متنی که دریافت کند را به همان صورت برمی‌گرداند. 🎉

امیدوارم از این آموزش لذت برده باشید! برای دیدن آموزش‌های بیشتر، کانال ما را دنبال کنید.
[کانال تلگرام]

#پایتون #آموزش_پایتون #ربات_تلگرام #برنامه_نویسی #python #telegram_bot
👍2
پارت ۲: مدیریت پیام‌ها و دستورات

۱. ایجاد هندلرهای مختلف برای دستورات مختلف (مثل /start, /help)

برای هر دستور، می‌توان یک هندلر تعریف کرد که به پیام‌های مربوطه پاسخ دهد. برای مثال، هندلرهای /start و /help را به صورت زیر تعریف می‌کنیم:

def start(update: Update, context: CallbackContext) -> None:
update.message.reply_text('سلام! به ربات من خوش آمدید.')

def help_command(update: Update, context: CallbackContext) -> None:
update.message.reply_text('چطور می‌توانم به شما کمک کنم؟')

۲. مدیریت پیام‌های متنی کاربران و پاسخ‌دهی به آن‌ها

با استفاده از یک هندلر پیام می‌توانیم پیام‌های متنی کاربران را دریافت کرده و به آن‌ها پاسخ دهیم:

def echo(update: Update, context: CallbackContext) -> None:
update.message.reply_text(update.message.text)

۳. استفاده از فیلترها برای تشخیص نوع پیام‌ها

فیلترها می‌توانند برای تشخیص نوع خاصی از پیام‌ها استفاده شوند. برای مثال، فیلتر Filters.text & ~Filters.command فقط پیام‌های متنی غیر دستوری را انتخاب می‌کند:

dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))

۴. راه‌اندازی و اجرای ربات

همانطور که در پارت ۱ توضیح داده شد، ربات را پیکربندی کرده و اجرا می‌کنیم:

def main():
updater = Updater(TOKEN)

dispatcher = updater.dispatcher

dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(CommandHandler("help", help_command))
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))

updater.start_polling()
updater.idle()

if __name__ == '__main__':
main()

این کد به ربات اجازه می‌دهد تا به دستورات /start و /help پاسخ دهد و هر پیام متنی غیر دستوری را بازتاب دهد. 🎉

امیدوارم از این آموزش لذت برده باشید! برای دیدن آموزش‌های بیشتر، کانال ما را دنبال کنید.
[کانال تلگرام]

#پایتون #آموزش_پایتون #ربات_تلگرام #برنامه_نویسی #python #telegram_bot
👍2
پارت ۳: استفاده از پایگاه داده

۱. نصب و راه‌اندازی SQLite

برای ذخیره اطلاعات کاربران و داده‌های ربات، می‌توان از پایگاه داده SQLite استفاده کرد. ابتدا کتابخانه sqlite3 را که به صورت پیش‌فرض در پایتون موجود است، وارد می‌کنیم:

import sqlite3

۲. اتصال ربات به پایگاه داده

ابتدا باید یک پایگاه داده ایجاد کنیم و سپس به آن متصل شویم. برای این کار، یک فایل پایگاه داده به نام bot_database.db ایجاد می‌کنیم:

conn = sqlite3.connect('bot_database.db')
cursor = conn.cursor()

۳. ایجاد جداول مورد نیاز

جدول‌هایی که نیاز داریم را ایجاد می‌کنیم. برای مثال، جدولی برای ذخیره اطلاعات کاربران:

cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
user_id INTEGER PRIMARY KEY,
username TEXT,
first_name TEXT,
last_name TEXT
)
''')
conn.commit()

۴. ذخیره اطلاعات کاربران

هنگامی که یک کاربر جدید با ربات تعامل می‌کند، اطلاعات او را در پایگاه داده ذخیره می‌کنیم. این کار را می‌توانیم در هندلر دستور /start انجام دهیم:

def start(update: Update, context: CallbackContext) -> None:
user = update.message.from_user
cursor.execute('''
INSERT OR IGNORE INTO users (user_id, username, first_name, last_name)
VALUES (?, ?, ?, ?)
''', (user.id, user.username, user.first_name, user.last_name))
conn.commit()
update.message.reply_text('سلام! به ربات من خوش آمدید.')

۵. بازیابی اطلاعات از پایگاه داده

برای بازیابی اطلاعات کاربران از پایگاه داده، می‌توانیم یک تابع تعریف کنیم. برای مثال، تابعی که لیست کاربران را برمی‌گرداند:

def get_users():
cursor.execute('SELECT * FROM users')
return cursor.fetchall()

۶. به‌روزرسانی و حذف اطلاعات

برای به‌روزرسانی و حذف اطلاعات نیز می‌توانیم توابع مشابهی تعریف کنیم. برای مثال، به‌روزرسانی نام کاربری یک کاربر:

def update_username(user_id, new_username):
cursor.execute('''
UPDATE users
SET username = ?
WHERE user_id = ?
''', (new_username, user_id))
conn.commit()

راه‌اندازی و اجرای ربات

در نهایت، کد کامل ربات با اتصال به پایگاه داده به شکل زیر خواهد بود:

import sqlite3
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext

TOKEN = 'YOUR_BOT_TOKEN'

conn = sqlite3.connect('bot_database.db')
cursor = conn.cursor()

cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
user_id INTEGER PRIMARY KEY,
username TEXT,
first_name TEXT,
last_name TEXT
)
''')
conn.commit()

def start(update: Update, context: CallbackContext) -> None:
user = update.message.from_user
cursor.execute('''
INSERT OR IGNORE INTO users (user_id, username, first_name, last_name)
VALUES (?, ?, ?, ?)
''', (user.id, user.username, user.first_name, user.last_name))
conn.commit()
update.message.reply_text('سلام! به ربات من خوش آمدید.')

def help_command(update: Update, context: CallbackContext) -> None:
update.message.reply_text('چطور می‌توانم به شما کمک کنم؟')

def echo(update: Update, context: CallbackContext) -> None:
update.message.reply_text(update.message.text)

def main():
updater = Updater(TOKEN)

dispatcher = updater.dispatcher

dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(CommandHandler("help", help_command))
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))

updater.start_polling()
updater.idle()

if __name__ == '__main__':
main()

این کد رباتی ایجاد می‌کند که به دستورات /start و /help پاسخ می‌دهد و اطلاعات کاربران را در یک پایگاه داده SQLite ذخیره می‌کند. 🎉

امیدوارم از این آموزش لذت برده باشید! برای دیدن آموزش‌های بیشتر، کانال ما را دنبال کنید.
[کانال تلگرام]

#پایتون #آموزش_پایتون #ربات_تلگرام #برنامه_نویسی #python #telegram_bot
👍1
☝️☝️ادامه کد بالا☝️☝️
updater.start_polling()
updater.idle()

if name == 'main':
main()

این کد به ربات اجازه می‌دهد تا عکس، ویدئو ارسال کند و پیام‌هایی با دکمه‌های تعاملی ایجاد کند که کاربران می‌توانند آن‌ها را انتخاب کنند. 🎉

امیدوارم از این آموزش لذت برده باشید! برای دیدن آموزش‌های بیشتر، کانال ما را دنبال کنید.
[کانال تلگرام]

#پایتون #آموزش_پایتون #ربات_تلگرام #برنامه_نویسی #python #telegram_bot
👍1
☝️☝️ادامه کد بالا☝️☝️
def get_age(update: Update, context: CallbackContext) -> int:
context.user_data['age'] = update.message.text
update.message.reply_text(f"نام شما: {context.user_data['name']}\nسن شما: {context.user_data['age']}")
return ConversationHandler.END

def cancel(update: Update, context: CallbackContext) -> int:
update.message.reply_text('مکالمه لغو شد.')
return ConversationHandler

.END

conv_handler = ConversationHandler(
entry_points=[CommandHandler('start_convo', start_conversation)],
states={
NAME: [MessageHandler(Filters.text & ~Filters.command, get_name)],
AGE: [MessageHandler(Filters.text & ~Filters.command, get_age)],
},
fallbacks=[CommandHandler('cancel', cancel)],
)

def main():
updater = Updater(TOKEN)

dispatcher = updater.dispatcher

dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(CommandHandler("help", help_command))
dispatcher.add_handler(CommandHandler("users", list_users))
dispatcher.add_handler(CommandHandler("schedule", schedule_message))
dispatcher.add_handler(CommandHandler("secret", secret_command))
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))
dispatcher.add_handler(CallbackQueryHandler(button))
dispatcher.add_handler(conv_handler)
dispatcher.add_error_handler(error)

updater.start_polling()
updater.idle()

if name == 'main':
main()

این کد رباتی را ایجاد می‌کند که قابلیت‌های پیشرفته‌ای مانند ارسال پیام‌های چندرسانه‌ای، مکالمات تعاملی، پیام‌های زمان‌بندی‌شده و مدیریت خطاها دارد. 🎉

امیدوارم از این آموزش لذت برده باشید! برای دیدن آموزش‌های بیشتر، کانال ما را دنبال کنید.
[کانال تلگرام]

#پایتون #آموزش_پایتون #ربات_تلگرام #برنامه_نویسی #python #telegram_bot
👍2