Внедрение телеграм бота в скрипт
import asyncio
from aiogram import Bot, Dispatcher, types
# Вставьте свой токен бота
BOT_TOKEN = "MY_TOKEN"
# Инициализация бота и диспетчера
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher(bot)
loop = asyncio.get_event_loop()
# Переменная для хранения текстового сообщения от пользователя
user_text_message = None
lock = asyncio.Lock() # Создаем объект блокировки
async def send_photo_to_user(user_id):
# Вставьте путь к вашей картинке
photo_path = "my_path"
# Отправка фото пользователю
with open(photo_path, "rb") as photo:
await bot.send_photo(user_id, photo)
@dp.message_handler(content_types=types.ContentType.TEXT)
async def handle_text_message(message: types.Message):
global user_text_message
async with lock: # Получаем блокировку, чтобы безопасно обновить переменную
user_text_message = message.text
await message.reply("Спасибо, ваше сообщение записано!")
async def on_startup(dp):
await bot.send_message(chat_id=1234567890, text="Бот запущен и готов к использованию!")
# Запускаем отправку фото в отдельном потоке
asyncio.create_task(send_photo_to_user(6084170896))
if __name__ == "__main__":
# Запускаем бота
loop.run_until_complete(on_startup(dp))
# Запускаем обработку сообщений в основном потоке
try:
loop.run_until_complete(dp.start_polling())
except KeyboardInterrupt:
pass
# Выводим значение user_text_message после запуска бота
print("Значение user_text_message после запуска бота:", user_text_message)
Возможно ли сделать так, чтобы print в этом скрипте работал? Его нельзя убирать с основного потока. Помогите пожалуйста. Может быть нужно разделение на разные файлы (но лучше без него)?
Источник: Stack Overflow на русском