Size: a a a

Telethon Talks RU

2019 February 02

NK

ID:482911655 in Telethon Talks RU
что за ; в начале каждой строки?
источник

😇๖

😇𝑀𝒶𝓀𝓈𝒾𝓂𝓀𝒶 ๖ۣۜℋค℘℘ℽ in Telethon Talks RU
ID:482911655
что за ; в начале каждой строки?
это закоментированные строки. формат файла ini тянется как конфиг
источник

NK

ID:482911655 in Telethon Talks RU
крч, тебе нужен бот который пересылает с выбранных каналов сообщения в другой канал? или копиует весь текст?
источник

NK

ID:482911655 in Telethon Talks RU
ух, жуть
источник

NK

ID:482911655 in Telethon Talks RU
а сам скрипт есть?
источник

😇๖

😇𝑀𝒶𝓀𝓈𝒾𝓂𝓀𝒶 ๖ۣۜℋค℘℘ℽ in Telethon Talks RU
ID:482911655
крч, тебе нужен бот который пересылает с выбранных каналов сообщения в другой канал? или копиует весь текст?
последние сообщения
источник

😇๖

😇𝑀𝒶𝓀𝓈𝒾𝓂𝓀𝒶 ๖ۣۜℋค℘℘ℽ in Telethon Talks RU
ща найду ссыль на гит
источник

😇๖

😇𝑀𝒶𝓀𝓈𝒾𝓂𝓀𝒶 ๖ۣۜℋค℘℘ℽ in Telethon Talks RU
чет не нашел
источник

😇๖

😇𝑀𝒶𝓀𝓈𝒾𝓂𝓀𝒶 ๖ۣۜℋค℘℘ℽ in Telethon Talks RU
#!/usr/bin/env python3
import logging
import os
import re
import sys
from configparser import ConfigParser
from telethon import TelegramClient, events
from telethon.tl.functions import channels
from telethon.tl.functions.messages import ImportChatInviteRequest
logging.basicConfig(format="%(message)s", level=logging.WARNING)
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
class Config:
   def init(self, config_name):
       config_parser = ConfigParser()
       config_parser.read(config_name)
       self.api_id = config_parser.getint("telethon", "api_id")
       self.api_hash = config_parser.get("telethon", "api_hash")
       self.session_name = config_parser.get("telethon", "session_name",
                                             fallback="default")
       self.forwarder_channels = set(
           c.strip() for c in
           config_parser.get("forwarder", "channels",
                             fallback="").split(","))
       self.patterns = [
           p.strip() for p in config_parser.get("forwarder", "patterns",
                                                fallback="").split(",")]
       self.recipient = config_parser.get("forwarder", "recipient",
                                          fallback="me").strip()
       self.downloader_channels = set(
           c.strip() for c in
           config_parser.get("downloader", "channels",
                             fallback="").split(","))
       self.download_directory = config_parser.get("downloader",
                                                   "download_directory",
                                                   fallback="./")
       if not self.download_directory.endswith("/"):
           self.download_directory += "/"
       self.download_audios = config_parser.getboolean(
           "downloader", "download_audios", fallback=True)
       self.download_documents = config_parser.getboolean(
           "downloader", "download_documents", fallback=True)
       self.download_gifs = config_parser.getboolean(
           "downloader", "download_gifs", fallback=True)
       self.download_photos = config_parser.getboolean(
           "downloader", "download_photos", fallback=True)
       self.download_stickers = config_parser.getboolean(
           "downloader", "download_stickers", fallback=True)
       self.download_videos = config_parser.getboolean(
           "downloader", "download_videos", fallback=True)
       self.download_video_notes = config_parser.getboolean(
           "downloader", "download_video_notes", fallback=True)
       self.download_voices = config_parser.getboolean(
           "downloader", "download_voices", fallback=True)
if name == 'main':
   if len(sys.argv) == 1:
       config_file = "config.ini"
   elif len(sys.argv) == 2:
       config_file = sys.argv[1]
   else:
       sys.exit("Error: command line arguments are not valid.")
   config = Config(config_file)
   os.makedirs(config.download_directory, exist_ok=True)
   client = TelegramClient(config.session_name,
                           config.api_id, config.api_hash,
                           update_workers=4, spawn_read_thread=False)
   client.start()
   forwarder_channels = []
   for c_name in config.forwarder_channels:
       try:
           channel = client.get_input_entity(c_name)
       except ValueError as e:
           if 'Join the group' in str(e):
               invite = c_name.rsplit('/', 1)[-1]
               client(ImportChatInviteRequest(invite))
               channel = client.get_input_entity(c_name)
           else:
               raise
       forwarder_channels.append(channel)
   recipient = client.get_input_entity(config.recipient)
   downloader_channels = [client.get_input_entity(c)
                          for c in config.downloader_channels]
   if not forwarder_channels and downloader_channels:
       sys.exit("sys.exiting, there is no channel to watch.")
   if forwarder_channels:
       @client.on(events.NewMessage(incoming=True, chats=forwarder_channels))
источник

😇๖

😇𝑀𝒶𝓀𝓈𝒾𝓂𝓀𝒶 ๖ۣۜℋค℘℘ℽ in Telethon Talks RU
@client.on(events.MessageEdited(incoming=True,
                                       chats=forwarder_channels))
       def forwarder(event):
           logger.debug("Received a message from a channel in forwarder list")
           client(channels.ReadHistoryRequest(event.input_chat,
                                              event.message.id))
           logger.debug("Marked the message as read")
           for pattern in config.patterns:
               if re.search(pattern, event.raw_text, re.I) is not None:
                   logger.info("The message matches a pattern, forwarding it")
                   return event.forward_to(recipient)
   if downloader_channels:
       event_mapper = []
       if config.download_audios:
           event_mapper.append(('audio', 'Audio'))
       if config.download_gifs:
           event_mapper.append(('gif', 'GIF'))
       if config.download_photos:
           event_mapper.append(('photo', 'Photo'))
       if config.download_stickers:
           event_mapper.append(('sticker', 'Sticker'))
       if config.download_videos:
           event_mapper.append(('video', 'Video'))
       if config.download_video_notes:
           event_mapper.append(('video_note', 'Video note'))
       if config.download_voices:
           event_mapper.append(('voice', 'Voice'))
       if config.download_documents:
           event_mapper.append(('document', 'Document'))
       @client.on(events.NewMessage(incoming=True, chats=downloader_channels))
       def downloader(event):
           logger.debug("Received a message "
                        "from a channel in downloader list")
           client(channels.ReadHistoryRequest(event.input_chat,
                                              event.message.id))
           logger.debug("Marked the message as read")
           for key, name in event_mapper:
               if getattr(event, key):
                   location = client.download_media(event.message,
                                                    config.download_directory)
                   logger.info("{} downloaded to {}".format(name, location))
                   break

   print("Listening for new messages...")
   client.idle()
источник

😇๖

😇𝑀𝒶𝓀𝓈𝒾𝓂𝓀𝒶 ๖ۣۜℋค℘℘ℽ in Telethon Talks RU
он еще дергает все медиа, но мне они не нужны
источник

😇๖

😇𝑀𝒶𝓀𝓈𝒾𝓂𝓀𝒶 ๖ۣۜℋค℘℘ℽ in Telethon Talks RU
мне просто чтобы пересылал новые сообщения в другой чат и все
источник

NK

ID:482911655 in Telethon Talks RU
ну там вроде немного строк С:
источник

NK

ID:482911655 in Telethon Talks RU
ну в плане написать надо не много строк
источник

NK

ID:482911655 in Telethon Talks RU
найми @martin_winks он за копейку сделает от скуки думаю xD
источник

😇๖

😇𝑀𝒶𝓀𝓈𝒾𝓂𝓀𝒶 ๖ۣۜℋค℘℘ℽ in Telethon Talks RU
ID:482911655
найми @martin_winks он за копейку сделает от скуки думаю xD
ок. спасибо за совет. обращусь :)
источник

NK

ID:482911655 in Telethon Talks RU
или ко мне xD
источник

NK

ID:482911655 in Telethon Talks RU
или к нему. но мне так лень xD
источник

😇๖

😇𝑀𝒶𝓀𝓈𝒾𝓂𝓀𝒶 ๖ۣۜℋค℘℘ℽ in Telethon Talks RU
их на гитхабе куча. но то не запускается, то ошибки валятся
источник

NK

ID:482911655 in Telethon Talks RU
Дефолт ведь xD
источник