Задать вопрос
@sasha_kristall

Telegram api как проголосовать post запросом в опросе?

Здравствуйте. Недавно познакомился с api Telegram.
Понял, как отправлять сообщения и создавать опросы в телеге с помощью post запроса (просмотрел множество примеров).

Решил создать опрос через sendPoll - всё получилось:
Создал бота, добавил его в канал, отправляю post запросом нужные параметры (чайт id, вопрос, варианты ответов, тип, верный ответ) - ура, появляется опрос в телеграм канале.

Теперь вопрос: как можно проголосовать в созданном опросе конкретным пользователем телеги. Т.е. я даже примерной инструкции или примера не нахожу. По опросам в инете множество вариантов, а тут просто не знаю. Т.е. теперь же не через бота? Как то инициализироваться нужно в запросе или что?

Нашёл messages.sendVote - это оно?
peer - что это? и в каком виде это пишется? я даже примера не могу найти.
msg_id - как я понял, это либо id сообщения с опросом, либо id самого опроса. Это есть.
options - тоже хз и как пишется.
Есть ли у кого примерный вид post запроса на голосование?

Подскажите куда копать, пожалуйста.
  • Вопрос задан
  • 496 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@sasha_kristall Автор вопроса
В общем, голосовать ботом, как я понял нельзя. Нужен именно юзер с сохранённой сессией (она после авторизации появляется).
Нашёл какой-то telethon на питоне и сделал через него

Как сделал:
1. Питон + telethon import TelegramClient
2. my.telegram.org/apps + сохранённая сессия
from telethon import TelegramClient, sync

# Вставляем api_id и api_hash
api_id = 
api_hash = ''

client = TelegramClient('рандомные_цифры', api_id, api_hash)
client.start()


3. Код скрипта на исполнение (сессия + api_id + id_user)
from telethon.sync import TelegramClient
from telethon import functions, types

with TelegramClient(name, api_id, api_hash) as client:
    result = client(functions.messages.SendVoteRequest(
        peer='username',
        msg_id=42,
        options=[b'тут_номер_ответа_начиная_с_нуля']
    ))
    print(result.stringify())


Итог
Таким образом, вместо 1 прямого post запроса я делал так (моя программа делала):
После создания опроса получал айди сообщения в канале с этим опросом, тут же у меня создавался питон файл с нужными значениями и сразу запускался.
Сделал для теста 4 аккаунта - всё голосуется без проблем - за секунду и опрос и все 4 голоса проставлялись.

Скорее всего, есть более легкие способы (именно пост запросом), но так как я не оч разбираюсь в программировании, то реализовал так.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AndrewBoeing
@AndrewBoeing
Начинающий и упорный программист )
Да, вы на верном пути. Для того, чтобы проголосовать в опросе через Telegram API, можно использовать метод messages.sendVote. Для того, чтобы этот метод работал, вы должны быть участником чата, где создан опрос, и у вас должны быть соответствующие права на отправку сообщений.

Для того, чтобы отправить post запрос на проголосование в опросе, необходимо в запросе указать следующие параметры:

  • peer - идентификатор чата или канала, где создан опрос.
  • msg_id - идентификатор сообщения с опросом.
  • options - список вариантов ответа, в которых вы хотите проголосовать. Этот параметр должен быть передан в виде JSON-объекта.


Пример post запроса на проголосование в опросе:

https://api.telegram.org/bot<token>/messages.sendVote

Parameters:
{
    "peer": "@mychannel", // идентификатор канала, где создан опрос
    "msg_id": "12345", // идентификатор сообщения с опросом
    "options": {
        "options": ["Вариант 1", "Вариант 2", "Вариант 3"], // список вариантов ответа, в которых вы хотите проголосовать
        "public_voters": true, // (опционально) разрешить отображение голосов других пользователей
        "multiple_choice": true // (опционально) разрешить выбор нескольких вариантов ответа
    }
}


Обратите внимание, что в параметре options необходимо передавать список вариантов ответа в виде массива. Если опрос позволяет выбрать несколько вариантов ответа, то в параметре multiple_choice нужно указать значение true.

Помимо этого, у вас должны быть соответствующие права на отправку сообщений в чате, где создан опрос, и вы должны передать токен бота в качестве параметра в URL-адресе запроса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы