Untitled
unknown
plain_text
2 years ago
2.7 kB
4
Indexable
import telegram import paho.mqtt.client as mqtt from telegram.ext import CommandHandler, MessageHandler, Filters, Updater TELEGRAM_BOT_TOKEN = 'TG_BOT_TOKEN_ПОМЕНЯТЬ' MQTT_BROKER_IP = '127.0.0.1' MQTT_BROKER_PORT = 1883 MQTT_TOPIC_1 = '/mypersnal/humidity' MQTT_TOPIC_2 = '/mypersnal/temperature' MQTT_TOPIC_3 = '/mypersnal/mode' bot = telegram.Bot(token=TELEGRAM_BOT_TOKEN) def start(update, context): update.message.reply_text('Привет! Этот бот подписан на топик MQTT и отправляет сообщения.(поставьте 40)') def on_message(client, userdata, message): global bot # Приписка prefix = "Влажность =" if message.topic == MQTT_TOPIC_1 else "Температура =" # Отправка сообщения с припиской bot.send_message(chat_id=Твой чат айди тг, text=f"{prefix} {message.payload.decode()}") def send_user_input(update, context): # Читаем ввод любого регистра user_input = update.message.text.lower() # Защищаем топик от спама любими словами if user_input == "авто" or user_input == "auto": mqtt_client.publish(MQTT_TOPIC_3, user_input) # Сообщение об установке авто режима update.message.reply_text("Установлен автоматический режим работы.") elif user_input == "ручной" or user_input == "manual": mqtt_client.publish(MQTT_TOPIC_3, user_input) # Сообщение об установке ручного режима работы update.message.reply_text("Установлен ручной режим работы.") else: # Если сообщение не проходит проверку update.message.reply_text("Я хочу всего лишь 40, поэтому реагирую только на сообщения: 'Авто', 'Ручной', 'Auto', 'Manual'.") updater = Updater(token=TELEGRAM_BOT_TOKEN, use_context=True) dispatcher = updater.dispatcher start_handler = CommandHandler('start', start) dispatcher.add_handler(start_handler) user_input_handler = MessageHandler(Filters.text & ~Filters.command, send_user_input) dispatcher.add_handler(user_input_handler) # MQTT движуха mqtt_client = mqtt.Client() mqtt_client.on_message = on_message mqtt_client.connect(MQTT_BROKER_IP, MQTT_BROKER_PORT, 60) mqtt_client.subscribe(MQTT_TOPIC_1) mqtt_client.subscribe(MQTT_TOPIC_2) mqtt_client.loop_start() updater.start_polling() updater.idle()
Editor is loading...
Leave a Comment