Отправка сообщения в канал Telegram с помощью Python
Есть скрипт для отправки контента в мой чат но перед отправкой он отправляет пост в избранное можно сделать чтобы он отправлял сразу на канал.
import asyncio
import telethon.events.newmessage
from telethon import TelegramClient
from telethon import events
import db
import pickle
db = db.SQLither("db.db")
api_id = 156...
api_hash = "590f0...."
session_name = "anon.session"
titles = ['https://t.me/канал']
channel_to = "@fo"
async def main():
asyncio.set_event_loop(asyncio.new_event_loop())
client = TelegramClient(session_name, api_id, api_hash)
async with client:
ent_channel_to = await client.get_entity(channel_to)
me = await client.get_me()
@client.on(events.NewMessage())
async def handler_ex(event: telethon.events.newmessage.NewMessage.Event):
try:
message_text = event.message.message
msg = event.message
if event.is_private:
if msg.peer_id.user_id == me.id:
if message_text.startswith("/accept"):
if len(message_text.split(" ")) == 2:
post = db.get_post(message_text.split(" ")[1])
if post:
if post[3] == 0:
if post[2]:
pck = pickle.loads(post[2])
await client.send_message(ent_channel_to, post[1], file=pck)
else:
await client.send_message(ent_channel_to, post[1])
db.set_accepted(post[0], 1)
await client.send_message(me, "Пост успешно отправлен :)")
else:
await client.send_message(me, "Пост уже обработан!")
else:
await client.send_message(me, "Вы ввели в неправильном формате!")
elif message_text.startswith("/decline"):
if len(message_text.split(" ")) == 2:
post = db.get_post(message_text.split(" ")[1])
if post:
if post[3] == 0:
db.set_accepted(post[0], 1)
await client.send_message(me, "Пост успешно отклонён :)")
else:
await client.send_message(me, "Пост уже обработан!")
else:
await client.send_message(me, "Вы ввели в неправильном формате!")
except Exception as e:
print(f"Ошибка: {e}")
@client.on(events.NewMessage())
async def handler(event: telethon.events.newmessage.NewMessage.Event):
try:
message_text = event.message.message
msg = event.message
if event.is_channel:
chat_id = event.message.peer_id.channel_id
ent = await client.get_entity(chat_id)
if f"https://t.me/{ent.username}" in titles:
if msg.media:
picklestring = pickle.dumps(msg.media)
id_ex = db.create_post(message_text, picklestring)[0]
await client.send_message(me, f"Новый пост! Текст: {message_text}\n\nПринять: /accept {id_ex}\nОтклонить: /decline {id_ex}", file=msg.media)
else:
id_ex = db.create_post(message_text, None)[0]
await client.send_message(me, f"Новый пост! Текст: {message_text}\n\nПринять: /accept {id_ex}\nОтклонить: /decline {id_ex}")
except Exception as e:
print(f"Ошибка: {e}")
await client.run_until_disconnected()
ex = asyncio.new_event_loop()
ex.run_until_complete(main())