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

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    на страничке https://limits.tginfo.me/ru-RU публикуются актуальные лимиты на все возможности телеграма
    Ответ написан
    Комментировать
  • Как добавить текст и картинку в inline режим (aiogram)?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Если у вас нет доступа к сайту по вбитой в сообщении ссылке то никак.

    613eabf391246464896824.png
    Данную информацию к отображению добавляет не бот, это делает сам клиент телеграмма, беря информацию прямо с сайта по ссылке. Данная информация указывается на странице сайта с помощью метатегов в хеадере.

    <head>
        ...
        <meta property="og:type" content="website" />
        <meta property="og:url" content="https://www.detmir.ru" />
        <meta property="og:title"
            content="Интернет магазин детских товаров и игрушек в Москве, игрушки и товары для детей в интернет магазине Детский Мир" />
        <meta property="og:description"
            content="Интернет-магазин «Детский Мир» предлагает купить товары и игрушки для детей по выгодной цене. В нашем каталоге Вы можете выбрать и заказать детские товары и игрушки с доставкой по Москве, Санкт-Петербургу, Новосибирску и другим городам России." />
        <meta property="og:image" content="https://go.detmir.st/img/96f25dcdeb082e67509489b08990ae0a.png" />
        <meta name="google-site-verification" content="H12mlaR4ux4mUKnx_ECZzODISfpLd6wlgAZVM5XZSYU" />
        <link rel="image_src" href="https://go.detmir.st/img/96f25dcdeb082e67509489b08990ae0a.png" />
    ...
    </head>
    Ответ написан
  • Как прервать запрос в mongoose?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    // мой chatId (я админ)
    const myId = 1396346856;
    // chatId собеседника
    let currentInterlocutorId;
    
    bot.on('message', msg => {
        //chatId который пишет боту
        const chatId = msg.chat.id
    
        // если сообщение от меня (хозяина бота)
        if (chatId === myId) {
            // не будем мучать БД при каждом моем сообщении поэтому сначала проверим, похоже ли то что я написал на ID пользователя
            if (/^\d+$/.test(msg.text)) {
    
                /*если сообщение которое я ввел равно chatId пользователя из базы данных, то следующие сообщения будут отправляться этому пользователю*/
                Person
                    .findOne({ chat: msg.text })
                    .then(person => {
                        currentInterlocutorId = msg.text;
                        bot.sendMessage(mayId, 'Соединение установлено')
                    })
                    .catch()
            }
    
            // если я (хозяина бота) ввел "stop" общение прекращаем
            if (msg.text === "stop") {
                bot.sendMessage(mayId, 'Соединение разорвано');
                bot.sendMessage(currentInterlocutorId, 'Я от тебя устал, не пиши мне больше!!!');
                currentInterlocutorId = undefined;
            }
    
        }
    
        // если собеседник был выбран
        if (currentInterlocutorId) {
            // если пишу я
            if (chatId === myId) {
                bot.sendMessage(currentInterlocutorId, msg.text)
            }
            // если выбранный собеседник пишет мне
            else if (chatId === currentInterlocutorId) {
                bot.sendMessage(mayId, msg.text)
            }
    
        }
    
    
    })
    Ответ написан
    1 комментарий
  • Как менять текст кнопок в TelegramBotApi?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    тут написано как
    https://core.telegram.org/bots/api#editmessagerepl...

    а как этим воспользоваться уже сильно зависит от используемого языка программирования и библиотеки для доступа к telegram api
    Ответ написан
  • Метод sendMessage. Как отправить клавиатуру, которая при клике по одной кнопке, отправляет отличное сообщение?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    если я правильно вас понял, то вы хотите при клике по звездочкам отправлять числа от 1 до 5, в зависимости от того, на какую звездочку произведен клик?
    если да, то в том виде, в котором вы хотите это получить на ReplyKeyboardMarkup это сделать нельзя в принципе,
    а для InlineKeyboardMarkup возможен такой вариант - сделать последней строчкой 5 кнопок со звездочками, задав через CallBackData каждой из звездочек цифру от 1 до 5, которая и будет отправлена боту при нажатии на кнопку.
    Ответ написан
  • Telegram bot Python. Как вычленить юзеров с арабскими символами в имени?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    вот регулярка, срабатывающая на наличие арабских символов:

    /\u0621-\u064A/

    соответственно проверка строки на наличие арабских символов будет выглядеть как то так:
    import re
    ...
    pattern = re.compile('\u0621-\u064A')
    result = pattern.search('ваша проверяемая строка')
    
    if result is not None:
          print('есть арабские символы')
    else:
          print('арабских символов нет')
    ...
    Ответ написан
    Комментировать
  • Как сделать телеграм-бота с подключаемыми операторами?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Сделать это не сложно, но по сути вы просите написать за Вас код такого бота.

    В общем виде функционал такого бота должен обеспечивать следующее:
    • список пользователей-администраторов и список пользователей-операторов;
    • доступные администраторам команды для добавления/удаления пользователей в/из этих списков;
    • отслеживать операторов находящихся онлайн;
    • сохранение истории общения для каждого пользователя клиента, обращавшегося к боту;
    • планировщик, распределяющий задания между операторами.


    Алгоритм работы примерно такой:
    1. при поступлении обращения, запрос онлайн-оператора у планировщика;
    2. передача вопроса клиент выбранному планировщиком оператору;
    3. по запросу оператора передача истории общения клиента;
    4. трансляция сообщений между клиентом и выбранным оператором и их сохранение в истории. Процесс продолжается тех пор пока (тут вы решаете сами что будет являться признаком окончания беседы. как вариант, команда от оператора и/или клиента.);
    5. сообщить планировщику об освобождении оператора;
    6. cохранить в истории отметку о том был ли решен вопрос а также uuid пользователя и оператора.


    Реализация данной схемы даст минимальный необходимый функционал, который в последствии может быть расширен при необходимости
    Ответ написан
    Комментировать