on_publish и on_message paho mqtt
есть вот такой код.
Сначала устанавливаю соединение mqtt.connect() потом подписываюсь на топики, если подключение прошло успешно запускаю telebot. Все отлично работает, но когда я публикую сообщение срабатывает on_message и мое сообщение пересылается мне обратно в бота, вопрос: как этого избежать?
Заранее спасибо!
import paho.mqtt.client as mqtt
import telebot
import sys
import time
client = mqtt.Client()
mqtt_options = {'username': "main_client", 'password': "__", 'host': "__", 'port': 1883, 'topics': ["send_data"]}
client.username_pw_set(mqtt_options['username'], mqtt_options['password'])
bot = telebot.TeleBot("__")
chatId = '__'
def on_connect(client, userdata, flags, rc):
print ("Connected!" + str(rc))
for topic in mqtt_options['topics']:
client.subscribe(topic)
def on_message(client, userdata, message):
print("message received ", str(message.payload.decode("utf-8")), "topic",message.topic,"retained ",message.retain, 'mid', message.mid)
if message.retain == 1:
print("This is a retained message")
bot.send_message(chatId, message.payload)
def on_publish(client,userdata,result):
print("data published \n")
client.on_connect = on_connect
client.on_message = on_message
client.on_publish = on_publish
try:
client.connect(mqtt_options['host'] , mqtt_options['port'])
except TypeError:
client.disconnect()
print("Connection error")
sys.exit(0)
@bot.message_handler(content_types=['text'])
def send(message):
client.publish('send_data', message.text)
while True:
client.loop_start()
bot.polling()