add poll answer support

This commit is contained in:
huker667 committed 2026-07-09 16:07:31 +03:00
1 parent f6109bb91a
commit ee5a6bdcc3
4 files changed
+100 -4

No files matched your search

+25 -1
View File
@@ -1,6 +1,6 @@
import time import time
from aiogram.methods import AnswerGuestQuery from aiogram.methods import AnswerGuestQuery, SendPoll
from aiogram.types import InlineQueryResultArticle, InputTextMessageContent, Message from aiogram.types import InlineQueryResultArticle, InputTextMessageContent, Message
from aiogram.enums import ChatType from aiogram.enums import ChatType
@@ -88,3 +88,27 @@ async def g_answer(data, message, text, title="da", id="1", parse_mode="Markdown
), ),
) )
) )
async def answer_poll(
data,
message,
question,
options,
is_anonymous=True,
poll_type="regular",
allows_multiple_answers=False,
correct_option_id=None,
user_id=None
):
return await data["bot"](
SendPoll(
chat_id=user_id,
question=question,
options=options,
is_anonymous=is_anonymous,
type=poll_type,
allows_multiple_answers=allows_multiple_answers,
correct_option_id=correct_option_id,
)
)
+63 -1
View File
@@ -33,7 +33,7 @@ from colors import *
from helpers import * from helpers import *
from commands import * from commands import *
from dotenv import load_dotenv from dotenv import load_dotenv
from random import uniform from random import uniform, shuffle
try: try:
from config import * from config import *
@@ -332,6 +332,68 @@ async def guest_middleware(handler, event, data):
last_command_time[user_id][1] = False last_command_time[user_id][1] = False
last_command_time[user_id][2] = [] last_command_time[user_id][2] = []
if result.startswith("[") and ":" in result:
rl = result.split("\n")
poll_type = rl[0].split(":")[0].replace("[", "").replace("]", "")
poll_name = rl[0].split(":")[1]
if len(rl) > 1:
options = rl[1].split(" =| ")
else:
options = ["варианты не указаны"]
correct_option = options[0]
correct_option_id = None
is_anon = True
allow_multiple_answers = False
if event.guest_message:
mid = user_id
elif message.chat.type == "private":
mid = user_id
elif message.chat.type in ("group", "supergroup"):
mid = message.chat.id
else:
return
if poll_type == "quiz":
shuffle(options)
correct_option_id = options.index(correct_option)
elif poll_type == "poll":
poll_type = "regular"
allow_multiple_answers = False
elif poll_type == "multipoll":
poll_type = "regular"
allow_multiple_answers = True
else:
poll_type = "regular"
try:
result = await answer_poll(
data=data,
message=message,
question=poll_name,
options=options,
is_anonymous=is_anon,
poll_type=poll_type,
correct_option_id=correct_option_id,
user_id=mid
)
except Exception as e:
if event.guest_message:
await g_answer(data, message, "гостевой режим не работает с опросами. либо добавь меня " \
"в группу, либо напиши мне в личку чтобы я выдал тебе опрос. ✅"
)
else:
print(f"{RED} -- err poll {e} {RESET}")
return
if result and event.guest_message:
await g_answer(data, message, "отправил опрос в личку, так как гостевой режим не работает с " \
"опросами✅✅"
)
return
try: try:
if event.guest_message: if event.guest_message:
await g_answer(data, message, result) await g_answer(data, message, result)
+10
View File
@@ -36,6 +36,7 @@ SYSTEM_PROMPTS = {
Не добавляй других эмодзи кроме галочек. Не добавляй других эмодзи кроме галочек.
Пиши с сука огромным количеством сарказма. Пиши с сука огромным количеством сарказма.
Не ставь знаки препинания в ответе и отвечай с маленькой буквы. Не ставь знаки препинания в ответе и отвечай с маленькой буквы.
не будь настолько тупым и хотя бы пиши правильно структуру опросов
""", """,
"тру узбек (февраль 2026)": """ "тру узбек (февраль 2026)": """
@@ -66,6 +67,15 @@ uzmoji (вставляй эмодзи всегда и в большом коли
""" """
} }
ADD_TO_PROMPT = """
типы опросов (указывается в квадратных скобках): poll (обычный опрос), multipoll (опрос с множественным ответом), quiz (квиз с выбор правильного ответа)
чтобы отправить опрос (если попросит пользователь) нужно ответить в следующем формате без лишнего текста:
[тип опроса]:название опроса
вариант 1 =| вариант 2 =| и так далее
(p.s ДЛЯ quiz: 1-й вариант - верный)
"""
IMAGE_PROMPT = """ IMAGE_PROMPT = """
опиши это фото максимально подробно на ~500 символов. опиши это фото максимально подробно на ~500 символов.
перепиши весь текст на изображении. перепиши весь текст на изображении.
+2 -2
View File
@@ -204,7 +204,7 @@ async def generate(
stream_cf = config["stream"] stream_cf = config["stream"]
system_prompt_name = config["prompt"] system_prompt_name = config["prompt"]
if system_prompt_name in SYSTEM_PROMPTS: if system_prompt_name in SYSTEM_PROMPTS:
system_prompt = SYSTEM_PROMPTS[system_prompt_name] system_prompt = SYSTEM_PROMPTS[system_prompt_name] + ADD_TO_PROMPT
else: else:
text = "❌произошла ошибка, возможные проблемы:\n" \ text = "❌произошла ошибка, возможные проблемы:\n" \
f"1. у вас выбран удалённый сист промпт (`{system_prompt_name}`)\n" \ f"1. у вас выбран удалённый сист промпт (`{system_prompt_name}`)\n" \
@@ -259,7 +259,7 @@ async def generate(
print(f"{RED} -- err photo - {e} : {model}{RESET}") print(f"{RED} -- err photo - {e} : {model}{RESET}")
content += [{"type": "text", "text": prompt}] content += [{"type": "text", "text": prompt}]
messages = [{"role": "system", "content": SYSTEM_PROMPTS[DEFAULT_PROMPT]}] + [ messages = [{"role": "system", "content": SYSTEM_PROMPTS[DEFAULT_PROMPT]+ADD_TO_PROMPT}] + [
{"role": "user", "content": content} {"role": "user", "content": content}
] ]