Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
Buchachalo

Ян

  • 17
    вклад
  • 12
    вопросов
  • 77
    ответов
  • 16%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как с помощью Aiogram запросить у юзера настоящее месположение?

    Buchachalo
    Ян @Buchachalo
    JaxWill запросить через стандартную геопозицию. Но пользователь может передвинуть точку и фейкануть. К сожалению через телегу не реализовать. Можно через нативное приложение.
    Ответ написан 22 дек. 2022
    3 комментария
    3 комментария
  • Как добавить пользователя в канал или группу, имея его user_id?

    Buchachalo
    Ян @Buchachalo
    Можно через инлайн режим. Но осторожнее с количеством добавлений. Телеграм можем посчитать вас спамером.
    Ответ написан 01 дек. 2022
    Комментировать
    Комментировать
  • Как работать с подобным списком json на python?

    Buchachalo
    Ян @Buchachalo
    _dict = {"Oleg":{"act":0,"total":0},"Vitya":{"act":2,"total":4}}
    result = [_.get('act') for _ in _dict.values()]
    
    # [0, 2]


    Выше парни все верно написали, но с точки зрения утилизации ресурсов не верно. Если я верно понимаю то алгоритм что в первом что во втором случаи O(n), мой будет O(1)
    Ответ написан 10 нояб. 2022
    Комментировать
    Комментировать
  • Как искать подстроку в callback данных?

    Buchachalo
    Ян @Buchachalo
    Тут вариантов масса. И еще зависит от версии aigramm которой пользуешься.

    Для 3 версии есть переработанная CDF
    https://docs.aiogram.dev/ru/latest/dispatcher/filt...

    Для 2+ версии aigramm, можно по старым схемам:
    task_cb = CallbackData("task_menu", "task_type", "task_num")
    
    # array = [{name: 'task_name_1', type: 'c', num: 123456}]
    
    def task_keyboard(array):
        markup = InlineKeyboardMarkup(row_width=2)
        for task in array:
            markup.insert(InlineKeyboardButton(text=task.get('name'),
                                               callback_data=task_cb.new(task_type=task.get("type"),
                                                                           task_num= task.get("num"))))
        return markup
    
    # Ловим колбэк
    @dp.callback_query_handler(task_cb.filter())
    async def show_task(callback: types.CallbackQuery, callback_data: dict):
        type = callback_data.get("task_type")
        num = callback_data.get("task_num")


    Ну либо лови колбэк как ты и описал и парси как обычный str.
    type = callback[:1]
    num= callback[1:]
    Ответ написан 13 окт. 2022
    Комментировать
    Комментировать
  • По нажатию inline кнопки удалить все сообщения в переписке с ботом?

    Buchachalo
    Ян @Buchachalo
    Можно взять любую NoSQL базу, полегче которая. И хранить там словари с id сообщений. {"12345":[123,456,789,..]}.
    Тык по инлайну, и в цикле перебрал все id. Только не спамь команду, api телеги может тебя наругать за частые обращения.
    Ответ написан 01 сент. 2022
    Комментировать
    Комментировать
  • Как передать информацию в телеграм бот в ссылке на него?

    Buchachalo
    Ян @Buchachalo
    Тут обсуждали
    https://qna.habr.com/q/1135496
    Ответ написан 25 авг. 2022
    Комментировать
    Комментировать
  • Как добавить кнопки в бота, через телеграм в Aiogram?

    Buchachalo
    Ян @Buchachalo
    Да все возможно.
    Реализовать генератор кнопок.
    Записать в БД url своих ресурсов. В том числе и возможность добавления в БД url через бота.
    В генератор кнопок стравливать все записи из своей БД.
    Заранее предусмотреть пагинацию на кнопках, так как url у тебя будет не мало со временем.
    Ответ написан 25 авг. 2022
    Комментировать
    Комментировать
  • Как создать фильтр в aiogram?

    Buchachalo
    Ян @Buchachalo
    str = str.lower()
    if "гол" in str:
        ....

    Ну если прям в лоб.
    Если принципиально только сначала строки то можно дополнить.
    Ответ написан 25 авг. 2022
    Комментировать
    Комментировать
  • Как вывести данные с postgresql в телеграм бота на postgresql?

    Buchachalo
    Ян @Buchachalo
    Круто бы получить хотя бы трейслог ошибки
    Ответ написан 25 авг. 2022
    Комментировать
    Комментировать
  • Как при редактировании сообщения прикрепить к нему клавиатурную кнопку?

    Buchachalo
    Ян @Buchachalo
    А если удалить прошлое и создать новое сообщение уже с кнопкой?
    Ответ написан 23 авг. 2022
    Комментировать
    Комментировать
  • Программа должна парсить товары OZON и отсылать в телеграмм бота. Почему этого не происходит?

    Buchachalo
    Ян @Buchachalo
    Автор, а подскажи, зачем ты пользуешься асинхронным фреймворком, но самые тяжелые io выполняешь синхронно?
    Потому что только на нем умеешь писать бота?
    Ответ написан 19 авг. 2022
    Комментировать
    Комментировать
  • Как чат-бот должен обращаться к пользователям: на вы или на ты?

    Buchachalo
    Ян @Buchachalo
    Мне не нравятся все эти "ВЫканья". Потому я не против если мне говорят ТЫ.
    Но зависит от твоей ЦА. Дискор и Телега молодежные, там не будет проблем. ВК уже содержит в себе достаточно "стариков" :) Но можно пренебречь. Если для ОК будешь пилить, там только на ВЫ.
    Ответ написан 19 авг. 2022
    Комментировать
    Комментировать
  • Как удалить неиспользуемую клавиатуру aiogram?

    Buchachalo
    Ян @Buchachalo
    Попробуй использовать await callback.message.delete_reply_markup()
    Если нужно через время удалить то используй таймер, но не забывай что нужно использовать асинхронный. Но он тебе в теории и не даст обычный использовать.
    Ответ написан 15 авг. 2022
    4 комментария
    4 комментария
  • Как сделать так, чтобы бот запоминал имя?

    Buchachalo
    Ян @Buchachalo
    async with state.proxy() as data: вот такой конструкцией четно говоря для хранения данных не пользовался. Пойдите по пути который описан в стандартных мануалах.

    Для записи и хранения данных
    await state.update_data(name=message.text)

    Для извлечения
    state_data = await state.get_data()
    name = state_data.get('name')
    Ответ написан 11 авг. 2022
    Комментировать
    Комментировать
  • Сallback_query_handler не улавливает событие. В чем проблема?

    Buchachalo
    Ян @Buchachalo
    Покажите фрагмент кода где вы делаете клавиатуру инлайн
    Ответ написан 11 авг. 2022
    Комментировать
    Комментировать
  • Пытаюсь сделать так чтобы бот вк мог делать скришот командой но что-то не выходит?

    Buchachalo
    Ян @Buchachalo
    Что то ты с асинхронщиной ИМХО перемудрил тут. Но ладно, работать будет в теории.

    Подскажи, у тебя site это глобальная переменная? Вернее глобальный массив, раз ты применяешь к нему .pop
    Если это просто строка то конкатенируй её без всяких .pop
    Ответ написан 11 авг. 2022
    Комментировать
    Комментировать
  • Как переопределить функцию в библиотеке?

    Buchachalo
    Ян @Buchachalo
    Я работаю в большинстве своем с http api, вашего кейса полностью не знаю. Но возможно вам поможет некая реализация middleware. Когда вы переподготавливаете входные данные. Условно сереализуете ваше файлы для работы библиотеки ААА
    Ответ написан 05 мая 2022
    2 комментария
    2 комментария
  • Можно ли в aiogram сделать преимущество стандартной телефонной клавиатуры для ввода текста над клавиатурой отправляемой ботом?

    Buchachalo
    Ян @Buchachalo
    Как минимум можно кнопку отмены вынести в инлайн клавиатуру
    Ответ написан 28 апр. 2022
    2 комментария
    2 комментария
  • Как правильнее совместить?

    Buchachalo
    Ян @Buchachalo
    @bot.message_handler(content_types=["text"])
    def lalala(message):
        text = message.text
        answer = requests.get('api')
        if 'amazon' in text:
            try:
                product_id = text.split('/', 6)[5]
                bot.send_message(message.chat.id, f'Amazon - json.loads(answer.text)[0]['title']')
            except Exception:
                bot.send_message(message.chat.id, 'Не верная ссылка')
        text = message.text  #  Вот это не понятная строчка, но наверное смысл есть, но он глубок
    Ответ написан 28 апр. 2022
    2 комментария
    2 комментария
  • Как в aiogram сделать так, чтобы на все команды кроме определенного списка бот реагировал одинаково?

    Buchachalo
    Ян @Buchachalo
    После того как опишешь реакции на все нужные команды создай хэндлер с регулярным выражением который будет ловить все сообщения начинающиеся с «/» и который будет отсылать твое сообщение.
    Ответ написан 28 мар. 2022
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • Следующие →
Самые активные сегодня
  • Evgenii
    • 19 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 6 ответов
    • 0 вопросов
  • Борис Алексеев
    • 5 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 5 ответов
    • 0 вопросов
  • work_jabir
    Джабир
    • 5 ответов
    • 0 вопросов
  • hint000
    hint000
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации