Вопрос задан 18.10.2023 в 02:18. Предмет Информатика. Спрашивает Мешкова Дарья.

Python. Телеграм бот. Створіть бота, який при отриманні мультимедіа від користувача (фото, аудіо,

відео, документ), зберігає file_id цього медіа та може його повторно відправити при отриманні відповідної команди.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Кабдылкаримов Карим.

import telebot

# Твій токен боту

TOKEN = 'your_bot_token'

bot = telebot.TeleBot(TOKEN)

@bot.message_handler(content_types=['photo', 'audio', 'video', 'document'])

def handle_media(message):

# Отримуємо file_id мультимедіа

file_id = message.document.file_id if message.document else None

file_id = message.photo[-1].file_id if message.photo else file_id

file_id = message.audio.file_id if message.audio else file_id

file_id = message.video.file_id if message.video else file_id

# Зберігаємо file_id для подальшого використання

if file_id:

# Тут ви можете зберегти file_id у базу даних або в іншу зберігаючу систему

save_file_id(file_id)

bot.reply_to(message, 'Медіа успішно збережено!')

else:

bot.reply_to(message, 'Це не підтримуване мультимедіа.')

@bot.message_handler(commands=['send_media'])

def send_media(message):

# Отримуємо file_id збереженого мультимедіа

file_id = get_saved_file_id()

# Відправляємо мультимедіа користувачеві

if file_id:

# В залежності від типу мультимедіа, використовуй відповідну функцію відправки

# Тут можна використовувати bot.send_photo, bot.send_audio, bot.send_video, bot.send_document і т.д.

bot.send_photo(message.chat.id, file_id)

else:

bot.reply_to(message, 'Мультимедіа для відправлення не знайдено.')

def save_file_id(file_id):

# Тут можна реалізувати логіку збереження file_id у базу даних або в іншу зберігаючу систему

# Наприклад, можна використовувати SQLite, MySQL, Redis, тощо.

pass

def get_saved_file_id():

# Тут можна реалізувати логіку отримання збереженого file_id з бази даних або з іншої зберігаючої системи

pass

bot.polling()

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для створення такого Telegram бота ви можете використовувати бібліотеку Python, як, наприклад, python-telegram-bot. Переконайтеся, що ви встановили цю бібліотеку:

bash
pip install python-telegram-bot

Ось код, який дозволить вам створити бота, який зберігатиме file_id для кожного мультимедіа, отриманого від користувача, і повторно відправлятиме його при отриманні відповідної команди:

python
import logging from telegram import Update from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext # Ваш токен бота TOKEN = 'YOUR_BOT_TOKEN' # Словник для збереження file_id file_ids = {} def start(update: Update, context: CallbackContext): update.message.reply_text("Вітаю! Відправте будь-яке мультимедіа, і я збережу його file_id.") def save_file_id(update: Update, context: CallbackContext): # Отримуємо file_id мультимедіа file_id = update.message.photo[-1].file_id if update.message.photo else \ update.message.audio.file_id if update.message.audio else \ update.message.document.file_id if update.message.document else \ update.message.video.file_id if update.message.video else None if file_id: # Зберігаємо file_id у словнику file_ids[update.message.chat_id] = file_id update.message.reply_text("file_id збережено. Ви можете його повторно відправити командою /send_media.") else: update.message.reply_text("Мені не вдалося знайти file_id мультимедіа.") def send_media(update: Update, context: CallbackContext): chat_id = update.message.chat_id if chat_id in file_ids: file_id = file_ids[chat_id] context.bot.send_photo(chat_id, photo=file_id) else: update.message.reply_text("Спочатку збережіть file_id мультимедіа, відправивши його боту.") def main(): updater = Updater(token=TOKEN, use_context=True) dispatcher = updater.dispatcher dispatcher.add_handler(CommandHandler('start', start)) dispatcher.add_handler(CommandHandler('send_media', send_media)) dispatcher.add_handler(MessageHandler(Filters.all, save_file_id)) updater.start_polling() updater.idle() if __name__ == '__main__': main()

Переконайтеся, що ви замінили 'YOUR_BOT_TOKEN' на фактичний токен вашого бота. Цей бот відповідає на команди /start, /send_media, зберігає file_id мультимедіа та відправляє його за запитом /send_media.

0 0

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

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос