# -*- coding: utf-8 -*-
import asyncio
from telethon import TelegramClient, sync, events
from telethon.tl.types import PeerChannel
from datetime import datetime
from telethon.tl.functions.channels import GetFullChannelRequest,JoinChannelRequest
import pytz
import cherrypy
import json
api_id = # API ID (получается при регистрации приложения на my.telegram.org)
api_hash = # API Hash (оттуда же)
phone_number = # Номер телефона аккаунта, с которого будет выполняться код
# Необходимо предварительно авторизоваться, чтобы был создан файл second_account,
# содержащий данные об аутентификации клиента.
client = TelegramClient('Name',api_id, api_hash)
class AddChannel(object):
@cherrypy.expose
def index(self,name=''):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
channel=loop.run_until_complete(client.get_entity(PeerChannel(name)))
client(JoinChannelRequest(channel))
return "add_"+name
class GetChannelMemberCount(object):
@cherrypy.expose
def index(self,id=0):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
peer=PeerChannel(int(id))
print("peer= ")
print(peer)
dialog=client.get_input_entity(peer)
print("dialog= ")
print(dialog)
channel=GetFullChannelRequest(channel=dialog)
print("channel= ")
print(channel)
title=client(channel)
print(title)
return json.dumps({'count':title.full_chat.participants_count,'title':title.full_chat.about})
async def main():
await client.connect()
print('(Press Ctrl+C twice to stop this)')
if not await client.is_user_authorized():
client.send_code_request(phone_number)
me = client.sign_in(phone_number, input('Enter code: '))
cherrypy.config.update({'server.socket_port': 3001})
cherrypy.tree.mount(AddChannel(), '/add')
cherrypy.tree.mount(GetChannelMemberCount(), '/update')
cherrypy.engine.start()
cherrypy.engine.block()
asyncio.get_event_loop().run_until_complete(main())