Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (4)

Лучшие ответы пользователя

Все ответы (12)
  • Как забрать всю строку после команды?

    @puzaka
    Если text = '+ударить ха тьфу тебе в лицо'
    и нам нужно получить 'ха тьфу тебе в лицо' , то можно использовать регулярку:
    import re
    text = '+ударить ха тьфу тебе в лицо'
    text = re.findall(r'\s(?:.+)', message.text)[0]
    print(text)  # ' ха тьфу тебе в лицо'   убрать первый пробел, я думаю, не будет проблемой

    Можно через .replace()
    text = '+ударить ха тьфу тебе в лицо'
    print(text.replace('+ударить ', ''))  # 'ха тьфу тебе в лицо'

    Можно через .join()
    text = '+ударить ха тьфу тебе в лицо'
    print(' '.join(text.split()[1:]))  # 'ха тьфу тебе в лицо'
    Ответ написан
    3 комментария
  • Aiogram - как отправить фото из sqlite пользователю не сохраняя на диск?

    @puzaka
    При отправке фото/файла боту, это фото/файл сохраняется на сервера телеграмма, и каждого такого файла есть свой file_id. Пример эхо бота, который присылает этот file_id, если прислать ему фото/файл:
    @dp.message_handler(content_types=[ContentType.PHOTO, ContentType.DOCUMENT])
    async def echo(message: Message):
        try:  # если отправил фото
            await message.answer(message.photo[-1].file_id)  # прислать ID фото
        except:  # если отправил файл
            await message.answer(message.document.file_id)  # прислать ID файла


    Для начала нужно записать этот file_id в базу данных, это можно сделать вот так:
    import sqlite3
    
    connect = sqlite3.connect("name_of_your_db.db")
    cursor = connect.cursor()
    
    def AddTaskToDB(file_id):
        try:
            cursor.execute("INSERT OR IGNORE INTO `name_of_your_table` (`name_of_column`) VALUES(?)", (file_id))
            connect.commit()
        except sqlite3.Error as error:  # ошибка
            print(f'Error: {error}')


    Затем получить file_id из базы данных:
    import sqlite3
    
    connect = sqlite3.connect("name_of_your_db.db")
    cursor = connect.cursor()
    
    def GetFileID():
        try:
            file_id = cursor.execute("SELECT `name_of_column` FROM `name_of_your_table`", ).fetchall()[0][0]
            return file_id
        except sqlite3.Error as error:  # ошибка
            print(f'Error: {error}')
            return "error"


    Ну и чтобы отправить этот файл:
    @dp.message_handler()
    async def sendPhoto(message: types.Message):
        try:  # если file_id - это фото
            await message.answer_photo(GetFileID, 'описание фотографии')
        except:  # если file_id - это документ
            await message.answer_document(GetFileID, 'описание документа')
    Ответ написан
    1 комментарий