В Telegram Bot API появился метод sendDice, возволяющий кинуть случайно кубик или дартс в чат.
https://core.telegram.org/bots/api#senddice
Понятно, как вызвать его HTTP запросом к API от имени бота.
Как вызвать этот метод через Telethon, с учетом того, что я вхожу в Telegram как пользователь, не бот?
- Вопрос задан более трёх лет назад
- 16560 просмотров
14 комментариев
Средний 14 комментариев
А простая отправка эмодзи кубика не работает?
klkvr, нет, я пробовал. Если посмотреть код десктопного клиента, он, да, преобразует эмодзи в стикер. Если просто отправить через Telethon сообщение с эмодзи, оно так и останется эмодзи, не анимируется и не бросает кубик.
Через Bot API все работает, но мне нужно бросить кубик не от имени бота, а от своего, от пользователя.
IRT, Ну сразу могу сказать, что через Telethon это сделать не получится, так как либу давно не обновляли. Даже в том же pytelegrambotapi sendDice метода нету еще, приходится делать через url-запрос. Можете поискать в user API телеграма информацию об этом, но отдельно от Telethon делать авторизацию юзера будет очень броблематично и костыльно
ФИШКИ ТЕЛЕГРАММА! КАК БРОСИТЬ КУБИК? КАК ОТРЕДАКТИРОВАТЬ ТЕКСТ? ТУТ ВСЁ КРАТКО И ПОНЯТНО!
IRT, https://docs.telethon.dev/en/latest/modules/custom. А хотя вот упоминание параметра в сообщении, говорящего про DIce. Попробуйте посылать сообщение с правильным значением этого параметра. Если он будет менее тривиальный чем True/False, поотправляйте себе сообщения с кубиком и изучите как будет выглядеть их структура
klkvr, да, видел, создатель Telethon добавил тип сообщения Dice. Но все равно непонятно, как его отправлять. К тому же, я попробовал этот кубик отфорвардить в нужную группу из Saved Messages — telethon падает с ошибкой, не могу мол отфорвардить сообщение этого типа.
IRT, я в Telethon просто в send_message пихаю переменную класса Message. У вас он от этого падает?
klkvr, https://github.com/LonamiWebs/Telethon/issues/1453
Я нашел ID кубика, нашел сообщение с кубиком по ID, пытаюсь сделать client.forward_messages этого сообщение в группу — падает.
Чтобы найти ID кубика я просто вывел все сообщения в чате через
for message in client.iter_messages(chat): print(message.id, ‘:’, message.text)
IRT, попробуй так
for message in client.iter_messages(chat): client.send_message(‘твое id’, message)
klkvr, явно косяк в библиотеке Telethon:
ERROR:telethon.client.updates:Unhandled exception on my_event_handler Traceback (most recent call last): File «/usr/local/lib/python3.8/site-packages/telethon/client/updates.py», line 431, in _dispatch_update await callback(event) File «pygram.py», line 25, in my_event_handler await client.send_message(where, dart) File «/usr/local/lib/python3.8/site-packages/telethon/client/messages.py», line 709, in send_message return await self.send_file( File «/usr/local/lib/python3.8/site-packages/telethon/client/uploads.py», line 352, in send_file raise TypeError(‘Cannot use as file’.format(file)) TypeError: Cannot use as file
Теперь можно кинуть кубик:
3. Секрет Телеграм Бросаем кубик Лучший лайфхак для принятия решения
await client.send_file(chat, types.InputMediaDice(»))
IRT, как вы получаете значение после кидка?
Артемий Фамилий, никак, задачей было просто кинуть кубик в чат. Можно попробовать после кидания прочитать последнее сообщение в чате.
IRT, не нет! 100% можно. Есть бот который кидает кубик, потом после завершения анимации пиште новое сообщение сколько выпало.
Писал логи, что бы посмотреть — пусто.
Появляется значение если самому отправить боту кубик.
Источник: qna.habr.com
Как кидать кубик в телеграмме
200 просмотров • 8 лет назад
Обзор автономного шлема виртуальной реальности HTC Vive Focus 3
Видеообзоры и дайджесты редакции
44.4K просмотров • 1 год назад
The Last Guardian
Видео по теме игр
1.2K просмотров • 6 лет назад
Arma III
Видео по теме игр
3.2K просмотров • 9 лет назад
Shin Megami Tensei: Devil Survivor Overclocked
Видео по теме игр
882 просмотров • 11 лет назад
Alien: Isolation
Видео по теме игр
351 просмотров • 9 лет назад
Sanctum 2
Видео по теме игр
1.0K просмотров • 10 лет назад
GTA V
Видео по теме игр
1.4K просмотров • 8 лет назад
Mortal Kombat: Legacy Season 2
Видео по теме игр
1.6K просмотров • 9 лет назад
Zen Pinball 2
Видео по теме игр
374 просмотров • 10 лет назад
Для работы проектов iXBT.com нужны файлы cookie и сервисы аналитики. Продолжая посещать сайты проектов, вы соглашаетесь с нашей Политикой сбора данных
Источник: ixbt.video
Подкрутка кубика в Telegram
https://t.me/mamontyatina
Итак, сразу к делу.
Подготовка
Для начала необходимо скачать и установить Python.
Теперь переходим к скачиванию и установке GitHub.
Отлично, теперь нам необходимо зарегистрироваться на Heruko.
Ставим двухфакторку (Google Authenticator).
Ищем Heruko API Token.
Копируем его и сохраняем в текстовик.
Переходим к My Telegram Org. Заходим под своим номером Telegram (код придет в Telegram).
Достаем свой API.
Копируем Api_ID и Api_Hash.
Таким образом мы получили все необходимые составляющие для запуска — установленный Python Telegram.
Работаем с Powershell
git clone https://gitlab.com/friendly-telegram/friendly-telegram
cd friendly-telegram
pip install -r requirements.txt
python -m friendly-telegram
После этой команды должно выскочить Разрешение на доступ к сетям. Даем доступ ко всем сетям.
Далее появится ссылка.
Настраиваем Friendly Telegram
В первых двух полях вводим все что копировали с My.Telegram.Org.
Далее вводим свой номер и нажимаем Send Code и Heruko API Tokens.
После загрузки появится окошко, с вашим Telegram ID, жмем и вводим код который придет в избранное.
Запуск
Переходим в Telegram и вводим команды:
.dlmod dice
Теперь мы можем пользоваться командой на подкрутку кубика: .dice 1 (кинуть кубик) 6 (какое число на кубике) 1 (сколько кубик хотите сразу кинуть).
.dice 1 6 1
Итоги
Скрипт работает в оффлайн режиме и нам не нужно больше выполнять каких-либо действий. Теперь мы можем в любой момент кинуть кубик с нужным числом с помощью команды.
Черное облако — Подпишись на наш второй канал! Император Ставит — 8200 рублей за два клика! Смотрящий за ₿ — Лучший канал о криптовалюте!
Источник: telegra.ph