تلگرام امکان راه اندازی ربات تلگرام بدون نیاز به سرور رو فعلا برای زبان جاوا اسکریپت فعال کرده, ببینیم در ادامه آیا برای سایر زبان ها از جمله پایتون هم اضافه میکنه یا نه, و اگر شد یک ویدیو در موردش قرار میدم
اطلاعات بیشتر در مورد روند اجرا با js
https://core.telegram.org/bots/serverless
اطلاعات بیشتر در مورد روند اجرا با js
https://core.telegram.org/bots/serverless
در دو آپدیت اخیر تلگرام حالت مهمان (guest mode) و حالت پیام خصوصی Ephemeral Messages) اضافه شده که میتونید باهاش ربات های جالبی بسازید
حالت مهمان اجازه میده که بدون نیاز به استارت ربات توسط کاربر یا عضو بودنش در گروه، هر جا که آیدیش منشن شد پیام رو ببینه و پاسخ بده
حالت خصوصی برای گروهه که اگر ربات ادمین باشه کاربر میتونه با ارسال یک دستور پیام خودش و ربات رو توی همون گروه خصوصی کنه که اعضای دیگه نبینن
هردو این قابلیت رو من در یک ترجمه گنجوندم که تست کنید
۱۴۰۴/۰۴/۳۰
@TrjmeBot
حالت مهمان اجازه میده که بدون نیاز به استارت ربات توسط کاربر یا عضو بودنش در گروه، هر جا که آیدیش منشن شد پیام رو ببینه و پاسخ بده
حالت خصوصی برای گروهه که اگر ربات ادمین باشه کاربر میتونه با ارسال یک دستور پیام خودش و ربات رو توی همون گروه خصوصی کنه که اعضای دیگه نبینن
هردو این قابلیت رو من در یک ترجمه گنجوندم که تست کنید
۱۴۰۴/۰۴/۳۰
@TrjmeBot
آموزش ساخت ربات تلگرام
در دو آپدیت اخیر تلگرام حالت مهمان (guest mode) و حالت پیام خصوصی Ephemeral Messages) اضافه شده که میتونید باهاش ربات های جالبی بسازید حالت مهمان اجازه میده که بدون نیاز به استارت ربات توسط کاربر یا عضو بودنش در گروه، هر جا که آیدیش منشن شد پیام رو ببینه…
برای تست حالت مهمان در شخصی، کافیه وارد چت یکی از دوستانتون بشید آیدی ربات رو تایپ کنید و یه متنی بنویسید
حریم خصوصی : طبق محدودیت تلگرام ربات نمیتونه به پیام های غیر از اونی که روش منشن شده دسترسی داشته باشه و در گروه هم علاوه بر این مورد، به اعضای گروه هم دسترسی نداره
@dp.guest_message()
async def GuestMode(message: Message)
با این دکوریتور توی aiogram میتونید کسانی که شمارو در حالت مهمان (در شخصی خودشون با دیگران یا گروه هایی که ربات عضو نیست ) منشن میکنن رو ببینید
برای پاسخ هم از این دستور استفاده کنید
await message.answer(text=text, receiver_user_id=message.from_user.id)
نکته مهم اینکه چک کنید که توی پیام guest_query_id باشه , با دستور زیر
is_guest = message.guest_query_id is not None
برای اضافه کردن دستور حالت خصوصی تنها چیز اضافه ای که داره گزینه is_ephemeral هست
به نمونه دقت کنید
اینکه چه کسی از این دستور استفاده میکنه رو میتونید با همون دکوریتور عادی آیوگرام بگیرید
به نمونه دقت کنید
BotCommand(command="ptrans", description="ترجمه خصوصی", is_ephemeral=True)
اینکه چه کسی از این دستور استفاده میکنه رو میتونید با همون دکوریتور عادی آیوگرام بگیرید
@dp.message(filters.Command("ptrans"))
قبل از استفاده حتما آیوگرام رو به نسخه 3.30.0 آپدیت کنید
اگر چندتا نسخه پایتون روی سرورتون دارید
pip install -U aiogram
اگر چندتا نسخه پایتون روی سرورتون دارید
python3.12 -m pip install -U aiogram
from aiogram import Bot, Dispatcher, filters
from aiogram.types import Message,InlineQueryResultArticle,\
InputRichMessage, CopyTextButton, InputRichMessageContent
import uuid
bot = Bot("TOKEN")
dp = Dispatcher()
@dp.message(filters.Command("ptrans"))
async def incoming_handler(message: Message):
print("یکی دستور حالت خصوصی فرستاده .")
await message.answer(text="این پیامو فقط خودت میبینی", receiver_user_id=message.from_user.id)
@dp.guest_message()
async def GuestMode(message: Message):
print("یکی در حالت مهمان پیام داده")
#برای اطمینان از اینکه مقدار مورد نیاز برای پاسخ رو داریم
is_guest = message.guest_query_id is not None
if is_guest:
rich = InputRichMessage(
format="markdown",
text="در حالت مهمان پیام دادی"
)
return await message.answer_guest_query(
result=InlineQueryResultArticle(
id=str(uuid.uuid4()),
title="ترجمه",
input_message_content=InputRichMessageContent(
rich_message=rich
)
)
)
async def main():
dp.start_polling(bot)
import asyncio
asyncio.run(main())
نمونه کد برای تست, کافیه توکن رباتتون رو جایگزین کنید
البته این کد باز جای کار داره که باید خودتون بهترش کنید
آموزش ساخت ربات تلگرام
from aiogram import Bot, Dispatcher, filters from aiogram.types import Message,InlineQueryResultArticle,\ InputRichMessage, CopyTextButton, InputRichMessageContent import uuid bot = Bot("TOKEN") dp = Dispatcher() @dp.message(filters.Command("ptrans"))…
کد رو اصلاح کردم دو تا نکته رو یادم رفته بود
آموزش ساخت ربات تلگرام
from aiogram import Bot, Dispatcher, filters from aiogram.types import Message,InlineQueryResultArticle,\ InputRichMessage, CopyTextButton, InputRichMessageContent import uuid bot = Bot("TOKEN") dp = Dispatcher() @dp.message(filters.Command("ptrans"))…
برای بخش مهمان دوتا چیز رو اضافه کردم
اول :
این برای اینه که اگر جواب کاربر طولانیه نیازه به پارت نباشه و از قابلیت جدید متن های طولانی تلگرام بهره ببره
دوم:
جواب حالت مهمان تقریبا شبیه جواب اینلاین کوئریه (همون که کاربر آیدی ربات رو تایپ میکنه یه فاصله میزاره و متن میزنه و همونجا هم لیست نتایج میاد )
پس پاسخ حالت مهمان شد :
اول :
rich = InputRichMessage(
format="markdown",
text="در حالت مهمان پیام دادی"
)
این برای اینه که اگر جواب کاربر طولانیه نیازه به پارت نباشه و از قابلیت جدید متن های طولانی تلگرام بهره ببره
دوم:
جواب حالت مهمان تقریبا شبیه جواب اینلاین کوئریه (همون که کاربر آیدی ربات رو تایپ میکنه یه فاصله میزاره و متن میزنه و همونجا هم لیست نتایج میاد )
پس پاسخ حالت مهمان شد :
return await message.answer_guest_query(
result=InlineQueryResultArticle(
id=str(uuid.uuid4()),
title="ترجمه",
input_message_content=InputRichMessageContent(
rich_message=rich
)
)
)
در چند وقت اخیر تلگرام آپدیت های زیادی اضافه کرده که باید طبق داکیومنت بخونید بگید کدوم بیشتر به کارتون میاد
این چند مورد رو خودم دوست داشتم و تست کردم
این چند مورد رو خودم دوست داشتم و تست کردم
آموزش ساخت ربات تلگرام
برای اضافه کردن دستور حالت خصوصی تنها چیز اضافه ای که داره گزینه is_ephemeral هست به نمونه دقت کنید BotCommand(command="ptrans", description="ترجمه خصوصی", is_ephemeral=True) اینکه چه کسی از این دستور استفاده میکنه رو میتونید با همون دکوریتور عادی آیوگرام…
یه نکته دیگه:
دستورات(کامند)هایی که توش is_ephemeral=True اضافه میکنید توی منوی اصلی ربات نمیاد (مختص گروه) و همچنین توی گروه اگر کاربر تلگرامش آپدیت نباشه بهش نشون نمیده
دستورات(کامند)هایی که توش is_ephemeral=True اضافه میکنید توی منوی اصلی ربات نمیاد (مختص گروه) و همچنین توی گروه اگر کاربر تلگرامش آپدیت نباشه بهش نشون نمیده
زرین پال به جز api که برای درگاه پرداختش استفاده میشه یه api دیگه برای خود مدیریت پنلش داره که با GraphQL ساخته شده, اگر درگاه زرین پال دارید پیشنهادمیکنم حتما بعنوان یک پروژه تمرینی برید سراغش
https://www.zarinpal.com/docs/apiDocs
https://www.zarinpal.com/docs/apiDocs
آموزش ساخت ربات تلگرام
زرین پال به جز api که برای درگاه پرداختش استفاده میشه یه api دیگه برای خود مدیریت پنلش داره که با GraphQL ساخته شده, اگر درگاه زرین پال دارید پیشنهادمیکنم حتما بعنوان یک پروژه تمرینی برید سراغش https://www.zarinpal.com/docs/apiDocs
توی شاخه بکاند, api نویسی خودش یه مهارت خیلی خوبه, تمام کسب و کارهایی که سایت و اپلکیشن و چیزهای دیگه دارن, اولین چیزی که توسعه میدن یک api واحد هست و بعدش از اون api در سایت و برنامه ها استفاده میکنن
آموزش ساخت ربات تلگرام
توی شاخه بکاند, api نویسی خودش یه مهارت خیلی خوبه, تمام کسب و کارهایی که سایت و اپلکیشن و چیزهای دیگه دارن, اولین چیزی که توسعه میدن یک api واحد هست و بعدش از اون api در سایت و برنامه ها استفاده میکنن
حالا برای اینکه بتونید خودتونو در زمینه نوشتن api تقویت کنید ابتدا باید ابزارهاش رو بشناسید که GraphQL یکی از خوباشونه
آموزش ساخت ربات تلگرام
زرین پال به جز api که برای درگاه پرداختش استفاده میشه یه api دیگه برای خود مدیریت پنلش داره که با GraphQL ساخته شده, اگر درگاه زرین پال دارید پیشنهادمیکنم حتما بعنوان یک پروژه تمرینی برید سراغش https://www.zarinpal.com/docs/apiDocs
دو مفهوم اصلی که شما برای درخواست زدن به این نوع api نیازه بدونید اینه که query برای درخواست داده و mutation برای تغییر دادست
آموزش ساخت ربات تلگرام
زرین پال به جز api که برای درگاه پرداختش استفاده میشه یه api دیگه برای خود مدیریت پنلش داره که با GraphQL ساخته شده, اگر درگاه زرین پال دارید پیشنهادمیکنم حتما بعنوان یک پروژه تمرینی برید سراغش https://www.zarinpal.com/docs/apiDocs
import requests
import os
from dotenv import load_dotenv
load_dotenv()
ZARINPAL_ACCESS_TOKEN = os.getenv("ZARINPAL_ACCESS_TOKEN")
BASE_URL = "https://next.zarinpal.com/api/v4/graphql"
headers={
"Accept": "application/json",
"Authorization": f"Bearer {ZARINPAL_ACCESS_TOKEN}",
"Content-Type": "application/json",
}
dargahha = """
query{
Terminals {
id
status
preferred_bank_account_id
domain
support_phone
key
name
logo
created_at
updated_at
}
}
"""
req = requests.post(
BASE_URL,
headers=headers,
json={"query": dargahha}
)
print(req.json())
نمونه کد که برای گرفتن لیست درگاه ها استفاده میشه
نکته : من ZARINPAL_ACCESS_TOKEN روی توی یک فایل .env ذخیره کردم و خط ۱ تا ۳ برای لود کردن همون فایل .env هست و شما میتونید اونو مستقیم توی کدتون بیارید و لزومی نداره حتما از .env استفاده کنید
اگر شما یه عدد بالای ۹۹۹ داشته باشید نیازه که سمت کاربر اونو با جداکننده نشون بدید چی کار میکنید؟
لطفا بدون استفاده از ai جواب هاتون رو بنویسید اینجا داریم یاد میگیریم
لطفا بدون استفاده از ai جواب هاتون رو بنویسید اینجا داریم یاد میگیریم
آموزش ساخت ربات تلگرام
اگر شما یه عدد بالای ۹۹۹ داشته باشید نیازه که سمت کاربر اونو با جداکننده نشون بدید چی کار میکنید؟ لطفا بدون استفاده از ai جواب هاتون رو بنویسید اینجا داریم یاد میگیریم
فرض کنید عدد زیر رو داریم
100000
حالا میخواییم در سمت کاربر به صورت زیر نشون داده بشه
100,000
کدش رو بنویسید
100000
حالا میخواییم در سمت کاربر به صورت زیر نشون داده بشه
100,000
کدش رو بنویسید
ایموجی های پرمیوم چطور تو ربات میشه استفاده کرد؟
برای اینکه بتونید از ایموجی پریمیوم تلگرام استفاده کنید نیاز هست اکانتی که باهاش ربات رو ساختید پریمیوم باشه
بعدش دو روش پیش رو دارید که متن با ایموجی پریمیوم باشه
روش اول : متن آماده با ایموجی پریمیوم رو در یک کانال خصوصی آماده بزارید و هرجا خواستید کپی مسیج بزنید
روش دوم : کل Entity مسیج رو ذخیره کنید و موقع ارسال پیام به entities پاس بدید
روش دوم احتمالا یکم گنگ باشه، کدش رو فردا یادم بمونه قرار میدم
ضمنا برای دکمه ها هم میتونید ایموجی پریمیوم استفاده کنید ، برای پیدا کردن آیدی ایموجی هم کافیه پست شامل ایموجی رو برای ربات زیر بفرستید
@AdsMarkdownBot
آیدی اون ایموجی رو بهتون میده و میتونید توی کیبرد استفاده کنید (اینم نمونه میزارم)