مثالها
دریافت پیام ساده
Python
from maxrubika import Bot
bot = Bot("Token")
@bot.on_command("start")
async def info(bot, event):
await event.reply(f"سلام، پیام شما دریافت شد.")
bot.run()
نمایش اطلاعات کاربر
Python
from maxrubika import Bot
from maxrubika.bot.filters import ChatType
bot = Bot("Token")
@bot.on_command("start", ChatType("user"))
async def start(bot, event):
i = await bot.get_chat_info(event.chat_id)
first_name = getattr(i.data.chat, 'first_name', '-')
last_name = getattr(i.data.chat, 'last_name', '-')
username = getattr(i.data.chat, 'username', '-')
await event.reply(f"""🔹 **نام:** {first_name}
🔸 **نام خانوادگی:** {last_name}
🔹 **نامکاربری:** {username}
🔸 **چت آیدی:**
`{event.chat_id}`
🔷 **سندر آیدی:**
`{event.author_id}`""")
@bot.on_command("start", ChatType(["group", "channel"]))
async def start_group(bot, event):
r = await bot.get_chat_info(event.chat_id)
await event.reply(f"🏷 **نام:** {r.data.chat.title}\n\n🆔 **چت آیدی:**\n`{event.chat_id}`")
bot.run(0)
تاس، سکه و عدد تصادفی
Python
from maxrubika import Bot
from maxrubika.bot.filters import Text
import random
bot = Bot("Token")
@bot.on_message(Text("^تاس"))
async def roll_dice(bot, event):
dice = ["⚀", "⚁", "⚂", "⚃", "⚄", "⚅"]
result = random.choice(dice)
await event.reply(result)
@bot.on_message(Text("^سکه"))
async def coin(bot, event):
result = random.choice(["🪙 شیر", "🪙 خط"])
await event.reply(result)
@bot.on_message(Text("^عدد"))
async def random_number(bot, event):
num = random.randint(1, 100)
await event.reply(f"🔢 {num}")
bot.run(0)
اکو کردن پیامها
Python
from maxrubika import Bot
from maxrubika.bot.filters import *
TOKEN = "Token"
SENDER_ID = ""
bot = Bot(TOKEN)
@bot.on_message(ChatType("group") & FromUser(SENDER_ID) & IsForwarded())
async def l(bot, event):
await event.forward()
await event.delete()
@bot.on_message(ChatType("group") & FromUser(SENDER_ID))
async def i(bot, event):
await event.copy()
await event.delete()
bot.run(0)
سکوت کردن کاربران
Python
from maxrubika import Bot
from maxrubika.bot.filters import ChatType, Text, IsReply, FromUser
token = "Token"
sender_id = ""
bot = Bot(token)
messages = {}
muted = []
@bot.middleware()
async def process_all_messages(bot, event, call_next):
chat_id = str(event.chat_id)
msg_id = event.msg_id
author_id = event.author_id
if chat_id not in messages:
messages[chat_id] = []
messages[chat_id].append({
"msg_id": msg_id,
"sender_id": author_id
})
if author_id in muted:
try:
await event.delete()
return
except: pass
await call_next()
@bot.on_message(Text("^سکوت$") & ChatType("group") & FromUser(sender_id) & IsReply())
async def mute_user(bot, event):
chat_id = str(event.chat_id)
reply_to_id = event.reply_to_message_id
target_sender = None
for msg in messages.get(chat_id, []):
if msg["msg_id"] == reply_to_id:
target_sender = msg["sender_id"]
break
if not target_sender:
await event.reply("**کاربر مورد نظر پیدا نشد!**")
return
if target_sender == sender_id:
await event.reply("**شما نمیتوانید خودتان را سکوت کنید!**")
return
if target_sender in muted:
await event.reply(f"**[کاربر مورد نظر]({target_sender}) قبلاً سکوت شده است.**")
return
muted.append(target_sender)
await event.reply(f"**[کاربر مورد نظر]({target_sender}) با موفیقت سکوت شد، از این پس پیام های کاربر از گروه حذف میشود.**")
@bot.on_message(Text("^لغو سکوت$") & ChatType("group") & FromUser(sender_id) & IsReply())
async def unmute_user(bot, event):
chat_id = str(event.chat_id)
reply_to_id = event.reply_to_message_id
target_sender = None
for msg in messages.get(chat_id, []):
if msg["msg_id"] == reply_to_id:
target_sender = msg["sender_id"]
break
if not target_sender:
await event.reply("**کاربر مورد نظر پیدا نشد!**")
return
if target_sender in muted:
muted.remove(target_sender)
await event.reply(f"**سکوت [کاربر مورد نظر]({target_sender}) لغو شد.**")
else:
await event.reply(f"**[کاربر مورد نظر]({target_sender}) سکوت نبوده است.**")
bot.run(0)
تگ (منشن) کردن کاربران
Python
from maxrubika import Bot
from maxrubika.bot.filters import Text, IsReply, ChatType
import random
import json
import os
import asyncio
bot = Bot("Token")
DATA_FILE = "group_data.json"
def load_data():
if os.path.exists(DATA_FILE):
with open(DATA_FILE, "r", encoding="utf-8") as f:
return json.load(f)
return {}
def save_data(data):
with open(DATA_FILE, "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
data = load_data()
def get_group_data(chat_id):
if chat_id not in data:
data[chat_id] = {"admin": None, "users": []}
save_data(data)
return data[chat_id]
def is_admin(event):
chat_id = str(event.chat_id)
group_data = get_group_data(chat_id)
return group_data["admin"] == str(event.author_id)
def get_non_admin_users(group_data, admin_id):
return [user for user in group_data["users"] if user != admin_id]
def parse_tag_count(text):
parts = text.split()
if len(parts) > 1 and parts[1].isdigit():
count = int(parts[1])
if count == 0:
raise ValueError("❌ **تعداد تگ نمیتواند ۰ باشد!**\nلطفاً عددی بین ۱ تا ۱۰۰۰ وارد کنید.")
if count > 1000:
raise ValueError("❌ **حداکثر تعداد برای تگ کردن ۱۰۰۰ نفر است!**\nلطفاً عددی کمتر از ۱۰۰۰ وارد کنید.")
return count
return 300
def generate_tags(users, count):
positive_texts = [
"سلام", "درود", "چه خبر؟", "خوبی؟", "چطوری؟",
"عزیزم", "جانم", "گلم", "عشقم", "رفیق",
"دوست خوبم", "نازنین", "مهربون", "زیبا", "خوشگل",
"دلبر", "قشنگ", "استاد", "ماه من", "ستاره",
"آفتاب", "شاهزاده", "سلطان", "دوست داشتنی",
"خوش اخلاق", "بهترینی", "یک دونهای", "ناز",
"برادر", "خواهر", "ویژه", "خاص", "قهرمان"
]
emojis = ["❤️", "🌹", "💫", "✨", "🌸", "💝", "🌟", "💗", "🌺", "💕"]
selected = random.sample(users, min(count, len(users)))
tags = []
for i, user in enumerate(selected):
text = random.choice(positive_texts)
emoji = random.choice(emojis)
tags.append(f"[{text} {emoji}]({user})")
return tags
def chunk_tags(tags, max_per_message=30, per_line=3):
messages = []
for i in range(0, len(tags), max_per_message):
chunk = tags[i:i + max_per_message]
lines = [" | ".join(chunk[j:j+per_line]) for j in range(0, len(chunk), per_line)]
messages.append("\n".join(lines))
return messages
async def send_tag_messages(bot, chat_id, msg_id, tags, count, is_reply=False):
messages = chunk_tags(tags)
first_msg = f"✅ {count} نفر تگ شدند:\n\n{messages[0]}"
if is_reply:
await bot.send_message(chat_id, first_msg, reply_to_message_id=msg_id)
else:
await bot.send_message(chat_id, first_msg, reply_to_message_id=msg_id)
for msg in messages[1:]:
await asyncio.sleep(1)
if is_reply:
await bot.send_message(chat_id, msg, reply_to_message_id=msg_id)
else:
await bot.send_message(chat_id, msg, reply_to_message_id=msg_id)
async def handle_tag(bot, event, is_reply=False):
chat_id = str(event.chat_id)
author_id = str(event.author_id)
if is_reply and not event.reply_to_message_id:
return
group_data = get_group_data(chat_id)
if group_data["admin"] is None:
await event.reply("❌ **ابتدا با نوشتن دستور 'فعال'، بات را فعال کنید.**")
return
if group_data["admin"] != author_id:
await event.reply("❌ **فقط مدیر بات میتواند از این دستور استفاده کند!**")
return
users = get_non_admin_users(group_data, group_data["admin"])
if not users:
await event.reply("❌ **هیچ کاربری به جز مدیر در گروه ثبت نشده است!**")
return
try:
count = parse_tag_count(event.text)
except ValueError as e:
await event.reply(str(e))
return
tags = generate_tags(users, count)
if is_reply:
msg_id = event.reply_to_message_id
else:
msg_id = event.msg_id
await send_tag_messages(bot, chat_id, msg_id, tags, len(tags), is_reply)
@bot.on_message(Text("^تگ") & IsReply() & ChatType("group"))
async def handle_reply_tag(bot, event):
await handle_tag(bot, event, is_reply=True)
@bot.on_message(Text("^تگ") & ChatType("group"))
async def handle_normal_tag(bot, event):
if not event.reply_to_message_id:
await handle_tag(bot, event, is_reply=False)
@bot.on_message(Text("^فعال$") & ChatType("group"))
async def set_admin(bot, event):
chat_id = str(event.chat_id)
author_id = str(event.author_id)
group_data = get_group_data(chat_id)
if group_data["admin"] is not None:
admin_id = group_data["admin"]
await event.reply(f"❌ **این بات قبلاً توسط [این کاربر]({admin_id}) فعال شده است!**\n\nتنها ایشان میتوانند از بات استفاده کنند.")
return
group_data["admin"] = author_id
if author_id not in group_data["users"]:
group_data["users"].append(author_id)
save_data(data)
chat_info = await bot.get_chat_info(event.chat_id)
title = chat_info.data.chat.title
await event.reply(f"✅ **ثبت نام شما به عنوان مدیر بات در گروه '{title}' با موفقیت انجام شد.**\n\nشما اکنون میتوانید از دستور 'تگ' برای منشن کردن کاربران استفاده فرمایید.")
@bot.on_message(ChatType("group"))
async def save_users(bot, event):
chat_id = str(event.chat_id)
author_id = str(event.author_id)
group_data = get_group_data(chat_id)
if author_id not in group_data["users"]:
group_data["users"].append(author_id)
save_data(data)
bot.run(0)
ترکیب بات و سلفبات - دریافت لینک پست
Python
import re
from maxrubika import Bot, Messenger
from maxrubika.bot.filters import Text
bot = Bot("Token") # توکن بات خود را اینجا وارد کنید
with Messenger("mySession") as app: # سشن اکانت خود را اینجا وارد کنید
@bot.on_message(Text(re.compile(r'https://rubika\.ir/\w+/[A-Z]+', re.IGNORECASE)))
async def get_post(bot, event):
link = event.text.strip()
try:
result = await app.get_channel_post_by_link(link)
ask_spam_link = result.ask_spam_link
if ask_spam_link:
await event.reply(f"**لینک پست مورد نظر آماده شد:**\n\n{ask_spam_link}")
else:
await event.reply("**خطایی رخ داد.**")
except Exception:
await event.reply("**لطفاً لینک معتبر وارد شود.**")
bot.run()
ترکیب بات و سلفبات - بررسی عضویت کانال
Python
from maxrubika import Bot, Messenger
from maxrubika.bot.filters import ChatType
bot = Bot("Token")
with Messenger("mySession") as app:
channel = "@TheMAXRubika"
guid = app.get_guid(channel)
info = app.get_channel_info(guid)
title = info.channel.channel_title
@bot.on_command("start", ChatType("user"))
async def handler(bot, event):
sender = event.author_id
chat_info = await bot.get_chat_info(event.chat_id)
username = getattr(chat_info.data.chat, 'username', None)
if username:
is_member = await app.check_join(guid, username)
if is_member:
await event.reply(f"✅ **شما در کانال {title} عضو هستید.**")
return
else:
await event.reply(f"❌ **ابتدا در کانال زیر عضو شوید و سپس مجدد دستور /start را وارد کنید:**\n{channel}")
return
members = await app.get_channel_members(guid)
sender_prefix = sender[:7]
for member in members.in_chat_members:
if member.member_guid[:7] == sender_prefix:
await event.reply(f"✅ **شما در کانال {title} عضو هستید.**")
return
await event.reply(f"❌ **ابتدا در کانال زیر عضو شوید و سپس مجدد دستور /start را وارد کنید:**\n{channel}\n\n**اگر از قبل عضو بودید، ابتدا کانال را ترک کنید و دوباره عضو کانال شوید.**")
bot.run(0)
ترکیب بات و سلفبات - بررسی عضویت گروه
Python
from maxrubika import Bot, Messenger
from maxrubika.bot.filters import ChatType
bot = Bot("Token")
with Messenger("mySession") as app:
group = "https://rubika.ir/joing/..."
guid = app.get_guid(group)
info = app.get_group_info(guid)
title = info.group.group_title
@bot.on_command("start", ChatType("user"))
async def handler(bot, event):
sender = event.author_id
chat_info = await bot.get_chat_info(event.chat_id)
username = getattr(chat_info.data.chat, 'username', None)
if username:
is_member = await app.check_join(guid, username)
if is_member:
await event.reply(f"✅ **شما در گروه {title} عضو هستید.**")
return
else:
await event.reply(f"❌ **ابتدا در گروه زیر عضو شوید و سپس مجدد دستور /start را وارد کنید:**\n{group}")
return
members = await app.get_group_members(guid)
sender_prefix = sender[:7]
for member in members.in_chat_members:
if member.member_guid[:7] == sender_prefix:
await event.reply(f"✅ **شما در گروه {title} عضو هستید.**")
return
await event.reply(f"❌ **ابتدا در گروه زیر عضو شوید و سپس مجدد دستور /start را وارد کنید:**\n{group}\n\n**اگر از قبل عضو بودید، ابتدا گروه را ترک کنید و دوباره عضو گروه شوید.**")
bot.run(0)