Задать вопрос
Ответы пользователя по тегу Telegram
  • Как вывести рандомное изображение из файла?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В python (как и во многих других языках программирования) символ \ в строковых значениях используется для экранирования и для спецсимволов. Например, \t - табуляция, \n - перевод строки. Поэтому использовать \ в строках так просто нельзя. Нужно или указать r перед строкой для отключения подобного поведения (r'c:\telegram'), или экранировать слеши: ('c:\\telegram').
    Ответ написан
    3 комментария
  • Возможно ли спарсить номера телефонов с телеграма?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Телеграм всячески декларирует заботу о приватности пользователей, а потому активно борется с бесконтрольным получением данных о телефонах. Так что нет, в общем случае нельзя. Но единичных пользователей можно считывать, если у них не скрыт номер телефона в профиле от посторонних, с помощью клиентского API (не бота). Много пользователей сразу сканировать не получится всё равно.

    Также можно найти пользователей по номеру телефона (тоже в небольших количествах!), если добавить телефон в свой список контактов. Такой вот "обратный" поиск (по номеру). Но при большой активности такого рода Телеграм ей также будет препятствовать.

    При этом всё это хорошо зарезается настройками приватности Телеграма. То есть пользователь может и скрыть от других свой телефон, и запретить вообще находить себя по номеру.

    Рекомендую даже не пытаться, тем более что в целом это лишено смысла. Телеграм - мессенджер, который изначально декларирует, что пользователь идентифицируется другими пользователями НЕ по номеру телефона в качестве основного идентификатора.
    Ответ написан
    Комментировать
  • Как постоянно обновлять данные запрашиваемы с google spreadsheet для телеграм бота?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Например, сделать загрузку данных отдельной функцией и запоминать время последнего скачивания. Если в момент вызова send_text текущее время превышает время последнего скачивания больше чем на определённую величину (5 минут, 1 час - насколько часто надо обновлять данные?), то вызвать функцию скачивания ещё раз и обновить переменную с временем последнего скачивания.
    Ответ написан
  • Как с помощью бота запросить разрешение на получение контактов пользователя?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нужно отправить кнопку с request_contact=True, пример есть тут
    Ответ написан
    Комментировать
  • Как ловить ботом сообщения из телеграм канала?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никак, бот не имеет доступа к сообщениям в каналах. Можно использовать MTproto API (клиентское) для таких задач.

    upd: это оказалось неверно, как обсудили в комментариях. Но следует учесть, что в том же telebot вместо @bot.message_handler следует использовать @bot.channel_post_handler
    Ответ написан
  • Как отправлять самому себе сообщения через бота телеграм?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Ошибку, вообще-то надо показывать, кто ж будет решать то не знаю что?

    Но давай я повангую.

    Во-первых, Bot - это класс. Нужно создать его экземпляр:

    from aiogram import Bot
    bot = Bot(token=config.bot_token)


    Во-вторых, при этом всё равно будет ошибка coroutine was never awaited. Потому что асинхронные функции нельзя просто так вызывать из синхронного кода.

    Вызвать можно так:

    async def main():
      await bot.send_message(my_chat_id, my_message)
      await bot.close()
    
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
    Ответ написан
    Комментировать
  • Как сделать реплай в общем чате телеграм?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    bot.send_message(message.chat.id, "Цитирую!", reply_to_message_id=message.message_id)
    Ответ написан
    3 комментария
  • Как отправить сообщение telegram, viber, whatsapp - без ботов? PHP?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Тут этот вопрос регулярно задают.

    Telegram - никак, вообще. Пусть нужные пользователи подпишутся на бота, а дальше им по user id можно слать.

    Viber - платно и довольно дорого через Viber Business Messages, цена одного сообщения не меньше чем смс, плюс минимальный ежемесячный платёж довольно большой. Доступ только бизнесам. Точно так же проще сделать бота и слать по id.

    WhatsApp - тут никаких бесплатных ботов легально не предусмотрено вообще, зато можно по номеру телефона тоже довольно дорого через множество посредников. Опять же, только бизнесам. В основном это продают тоже с обязательным минимальным платежом, но тут хотя бы у некоторых (у того же twilio) есть тарифы без абонентки, с оплатой за каждое сообщение. Ещё можно рисковать нелегальными методами через эмуляцию WhatsApp Web.
    Ответ написан
    7 комментариев
  • Как узнать id только что отправленного ботом telegram?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В чём проблема? Метод API sendMessage возвращает id отправленного сообщения.
    Ответ написан
  • В телеграме не подгружается картинка с Wordpress. Почему?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Телеграм кэширует preview ссылок. Поэтому бесполезно менять что-то на сайте, когда он уже запомнил не то, что нужно.

    Решение: находим бота WebpageBot, вводим ему ссылку - и он обновляет preview на серверах Телеграма. Только что проделал это с указанной ссылкой - и всё заработало.
    Ответ написан
    8 комментариев
  • Получить дание от пользователя в telegram bot?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Сделать user_data словарём, где ключ - id пользователя

    Типа такого:

    user_data = {}

    В нужном месте вместо user_data используем user_data[message.from_user.id]

    try:
      user_data[message.from_user.id]
    except KeyError:
      user_data[message.from_user.id] = initial_data_for_new_user
    ...
    user_data[message.from_user.id] = another_data


    Но вообще-то в популярных фреймворках есть свои механизмы для FSM (Finite State Machine), с помощью которых всё это можно писать гораздо аккуратнее.
    Ответ написан
    Комментировать
  • Как сделать скрипт на удаление всех людей из канала в тг?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Надо убрать лишнюю строку

    with app:
    Ответ написан
    Комментировать
  • Как подтянуть сообщения с телеграм канала на свой сайт?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Возможность есть, API телеграма открыт, можно написать бота. Но сообщения в Телеграм будут подписаны ником бота, очевидно.
    Ответ написан
  • Как удалить последнее сообщение бота в telebot?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    bot.send_message возвращает объект Message с полем message_id, где хранится идентификатор сообщения, его можно дальше использовать для работы с этим сообщением.

    msg = bot.send_message(message.chat.id, "loading...")
    ...
    bot.edit_message_text("result", chat_id=message.chat.id, message_id=msg.message_id)
    bot.delete_message(message.chat.id, msg.message_id)
    Ответ написан
    2 комментария
  • Как спарсить с telegram контактов группы/каналов, используя свой аккаунт через python?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Тут в коде два раза создаётся TelegramClient, один из них лочит файл сессии, второй потом валится из-за того, что она залочена первым.
    Ответ написан
    Комментировать
  • Как можно опубликовать пост в группе через телеграм бот от имени групы?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    От имени группы нельзя, только от имени канала. Есть два способа:

    1. Сделать группу "группой обсуждения канала", тогда новые посты в канал будут публиковаться в группе.

    2. Делать форвард сообщений из канала в группу.
    Ответ написан
    1 комментарий
  • Как узнать какой юзер заблокировал бота?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Ну exception случается при отправке конкретному id - вот и вывести этот id.

    Кстати, в except лучше указывать конкретный тип exception. Потому что может случиться ConnectionError из-за упавшей сети или сбоя Телеграма - и бот решит что все его заблокировали.
    Ответ написан
    Комментировать
  • Как при новом заказе Woocommerce отправлять сообщения в Viber, WhatsApp, Telegram?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Тут надо начать с того, какие есть легальные способы посылать сообщения в каждый из мессенджеров.

    Telegram. Тут можно бесплатно создать бота и бесплатно посылать подписавшимся на бота сообщения. Но номера телефонов пользователей известны не будут, только их id.

    Как это использовалось на примере одного сайта трекинга посылок: нужно было написать боту команду /id, полученный id вбить в свой профиль на сайте, после этого бот начинал присылать тебе обновления по твоим посылкам.

    WhatsApp. Тут есть API для бизнесов, который позволяет работать в двух режимах: либо посылать по номеру телефона сообщения, удовлетворяющие согласованным с WA шаблонам (платно), либо если пользователь сам напишет входящее сообщение, открывается 24-часовое окно неогранинного общения с ним с любыми текстами (окно открыто 24 часа с момента последнего сообщения от пользователя), что позволяет делать чат-ботов, осуществлять поддержку итд, но не даёт слать что попало.

    В отличие от Viber, у бизнес-аккаунта есть свой телефонный номер. WhatsApp продаёт это через партнёров, которые могут брать 20-30 тыс. рублей в месяц даже при минимальном объёме трафика.

    Viber. У Viber есть два разных сервиса: Viber Business Messages (Viber Services) и Viber Public Accounts (VIber Bot).

    Второй похож на Telegram: можно создать Public Account, пользователи могут на него подписаться, после чего им можно писать сообщения. Но вместо номера телефона пользватели определяются по некоторому id.

    Первый похож на WhatsApp: можно посылать по номеру телефона, правда, спам запрещён, но технически на это нет специальных ограничений (но уже при 5% пожаловавшихся пользователей будет бан, который не обойти просто сменой номера, потому что у бизнес-аккаунта и номера-то никакого нет). Но шаблоны тоже есть, сообщения по утверждённым шаблонам считаются транзакционным трафиком и стоят дешевле. Это Viber продаёт только через партнёров, есть лимит на минимальный месячный ценник, который для маленьких интернет-магазинчиков будет заградительным. Плюс популярность Viber в России не очень велика и продолжает падать.

    Суммируя всё вышесказанное: посылать в мессенджеры по номеру телефона при создании нового заказа либо невозможно, либо неоправданно дорого по сравнению с обычными СМС.

    Есть также менее легальные способы для WhatsApp, основанные на имитации работы через браузерный клиент WhatsApp Web, их цена намного ниже официального метода, но все они чреваты баном со стороны WhatsApp, так что на живом нужном номере с таким уж точно не стоит играться.

    В случае Telegram можно также пытаться пилить взаимодействие на базе обычного клиента (у него открытый код), включая поиск аккаунтов по номеру (если пользователь не запретил это настройками приватности), но при активном поиске по номеру телефона Telegram быстро забанит.
    Ответ написан
    Комментировать
  • Есть ли подобные боты для Viber?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Боты в Viber отвечают только на личные сообщения, так что нет, такого бота сделать нельзя.
    Ответ написан
    Комментировать