@edwaaard77

Как отправить документ при нажатии на инлайн-кнопку в телеграм боте?

Как отправить файл raspisanie.jpg, который у меня уже лежит на одном с тг-ботом удаленном сервере на нажатие инлайн-кнопки button_shift2? Путь к этому файлу указан.

import asyncio
from aiogram import Bot, Dispatcher, types, F
from aiogram.filters.command import Command
from aiogram.filters import CommandStart
from aiogram.types import (InlineKeyboardButton, InlineKeyboardMarkup, Message, CallbackQuery)
from config import Config, load_config
import sys
from aiogram.types import FSInputFile

config: Config = load_config()
bot_token: str = config.tg_bot.token

# Создаем объекты бота

bot = Bot(bot_token)
dp = Dispatcher()

button_schedule = InlineKeyboardButton(
    text='График работы',
    callback_data='button_schedule_pressed'
)

button_contact = InlineKeyboardButton(
    text='Контакт',
    callback_data='button_contact_pressed'
)

button_docs = InlineKeyboardButton(
    text='Документы',
    callback_data='button_docs_pressed'
)

button_holidays = InlineKeyboardButton(
    text='Отпуск',
    callback_data='button_holidays_pressed'
)

button_study = InlineKeyboardButton(
    text='Техучеба',
    callback_data = 'button_study_pressed'
)

# Создаем объект основной инлайн-клавиатуры
keyboard_main = InlineKeyboardMarkup(
    inline_keyboard=[[button_schedule],
                          [button_contact],
                          [button_docs],
                          [button_holidays],
                          [button_study]]
)

button_shift2 = InlineKeyboardButton(
    text='Смена №2',
    callback_data='button_shift2_pressed'
)

button_dinner = InlineKeyboardButton(
    text='Столовая',
    callback_data='button_dinner_pressed'
)

button_sim = InlineKeyboardButton(
    text='Тренажер',
    callback_data='button_sim_pressed'
)

# Создаем объект инлайн-клавиатуры "График работы"
keyboard_schedule = InlineKeyboardMarkup(
    inline_keyboard=[[button_shift2],
                              [button_dinner],
                              [button_sim]]
)

# Этот хэндлер будет срабатывать на команду "/start" и отправлять в чат главную клавиатуру
@dp.message(CommandStart())
async def process_start_command(message: Message):
    await message.answer(
        text='Здравствуйте! Что желаете найти?',
        reply_markup=keyboard_main
)


# Этот хэндлер будет срабатывать на кнопку "Расписание" и отправлять в чат клавиатуру с расписаниями
@dp.callback_query(F.data == 'button_schedule_pressed')
async def process_button_schedule_press(callback: CallbackQuery):
    if callback.message.text != 'Чего именно?':
        await callback.message.edit_text(
            text='Чего именно?',
            reply_markup=keyboard_schedule
        )
    await callback.answer()

image_raspisanie = FSInputFile('~/tg_bot_orvd/raspisanie.jpg')

@dp.callback_query(F.data == 'button_shift2_pressed')
async def process_button_shift2_press(callback: CallbackQuery):
    if callback.message.text != 'График работы смены №2':
        await callback.message.reply_document(
            open('~/tg_bot_orvd/files/raspisanie.jpg', 'rb'),
            caption='График работы смены №2',
        )

@dp.callback_query(F.data == 'button_dinner_pressed')
async def process_button_dinner_press(callback: CallbackQuery):
    if callback.message.text != 'График работы столовой:\n\n 09.30-13.30\n 16.00-18.00':
        await callback.message.edit_text(
            text='График работы столовой:\n'
            '09.30-13.30\n'
            '16.00-18.00'
        )

@dp.callback_query(F.data == 'button_sim_pressed')
async def process_button_sim_press(callback: CallbackQuery):
    if callback.message.text != 'Тренировка персонала ОВД':
        await callback.message.edit_text(
            text='Тренировка персонала ОВД',
            reply_markup=keyboard_schedule
        )
    await callback.answer()

# Запуск процесса поллинга новых апдейтов

if __name__ == "__main__":
    dp.run_polling(bot)
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы