B
Size: a a a
B
e
e
B
e
B
e
B
from telethon.sync import TelegramClient, events
from telethon.errors import SessionPasswordNeededError
from telethon.tl.types import PeerUser, PeerChannel
import settings
from time import sleep
import paho.mqtt.client as mqtt
import logging
from threading import Thread
client = TelegramClient(f'sessions/{settings.phone.replace("+", "")}.session', settings.api_id, settings.api_hash)
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)
while not client.is_connected():
sleep(1)
client.connect()
if not client.is_user_authorized():
client.send_code_request(settings.phone)
try:
myself = client.sign_in(settings.phone, input('Enter code: '))
except SessionPasswordNeededError:
client.sign_in(password=input('Enter cloud password: '))
mq = mqtt.Client("WeatherSayer service")
mq.connect('localhost')
process = Thread(target=mq.loop_forever)
process.daemon = True
process.start()
@client.on(event=events.NewMessage())
async def messageHandler(event):
if type(event.message.peer_id) == PeerUser and event.message.peer_id.user_id in [123456789]: # ID бота, от которого нужны сообщения
logger.info(f"weather received: {event.message.message}")
msg_string = f'{event.message.message}'.replace("\n", "").strip()
publish_mq(topic="/weather/today", payload=msg_string)
else:
logger.info(f"event received: {event}")
@client.on(event=events.ChatAction())
async def chatHandler(event):
logger.info(f"chat action received: {event}")
def publish_mq(topic, payload):
try:
mq.publish(topic=topic, payload=payload)
except Exception as ex:
logger.error(f'Error!: {ex}')
client.run_until_disconnected()B
e
a
B
e
a
B
B
B
cd /opt && mkdir tghelper && cd ./tghelperположить скрипт в /opt/tghelper
pip3 install telethon && pip3 install paho-mqttзапустить скрипт вручную, авторизоваться
systemctl enable tghelper
service tghelper startB
[Unit]
Description=TGHelper daemon
After=syslog.target
After=network.target
[Service]
Type=simple
User=pi
Group=pi
ExecStart=/usr/bin/python3 -u /opt/tghelper/main.py
PIDFile=/run/tghelper.pid
WorkingDirectory=/opt/tghelper
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=TGHELPER
# Give the script some time to startup
TimeoutSec=10
RestartSec=10
[Install]
WantedBy=multi-user.target
B
B
api_id = 123456
api_hash = "1234567890asdfghjkl"
phone = "+79991234567"