Spaces:
Paused
Paused
""" | |
/poll <question> | <option1> | <option2> | ... [| key=value ...] | |
Create a poll in the group. Only admins/owner can use this command. | |
Supports all Pyrogram send_poll options via key=value pairs after the options. | |
Example: | |
/poll What's your favorite color? | Red | Blue | Green | is_anonymous=False | allows_multiple_answers=True | |
""" | |
from pyrogram import filters | |
from pyrogram.types import Message | |
from DragMusic import app | |
async def is_admin(client, chat_id, user_id): | |
member = await client.get_chat_member(chat_id, user_id) | |
return member.status in ("administrator", "creator") | |
async def poll_command(client, message: Message): | |
if not await is_admin(client, message.chat.id, message.from_user.id): | |
return await message.reply_text("Only group admins and the owner can use this command.") | |
if len(message.command) == 1: | |
return await message.reply_text( | |
"Usage:\n/poll <question> | <option1> | <option2> | ... [| key=value ...]\n" | |
"Example:\n/poll What's your favorite color? | Red | Blue | Green | is_anonymous=False | allows_multiple_answers=True" | |
) | |
# Join the rest of the message and split by | | |
parts = message.text.split(None, 1)[1].split("|") | |
parts = [p.strip() for p in parts if p.strip()] | |
if len(parts) < 3: | |
return await message.reply_text("You must provide a question and at least two options.") | |
question = parts[0] | |
options = [] | |
kwargs = {} | |
for part in parts[1:]: | |
if "=" in part: | |
key, value = part.split("=", 1) | |
key = key.strip() | |
value = value.strip() | |
# Convert value to correct type | |
if value.lower() == "true": | |
value = True | |
elif value.lower() == "false": | |
value = False | |
elif value.isdigit(): | |
value = int(value) | |
kwargs[key] = value | |
else: | |
options.append(part) | |
if len(options) < 2: | |
return await message.reply_text("You must provide at least two options.") | |
try: | |
poll_msg = await app.send_poll( | |
chat_id=message.chat.id, | |
question=question, | |
options=options, | |
**kwargs | |
) | |
await message.reply_text(f"Poll created: [Jump to poll]({poll_msg.link})", disable_web_page_preview=True) | |
except Exception as e: | |
await message.reply_text(f"Failed to create poll: {e}") |