Python Спамер Telegram

[?]

Through thorns to stars
Администратор
[?]

[?]

Through thorns to stars
Администратор
Сообщения
853
Реакции
1,058
Python:
import sys
from getpass import getpass
from time import sleep

from telethon import TelegramClient
from telethon.errors import SessionPasswordNeededError
from telethon.errors.rpc_errors_400 import UsernameNotOccupiedError
from telethon.errors.rpc_errors_420 import FloodWaitError
from telethon.tl.functions.channels import GetParticipantsRequest
from telethon.tl.functions.contacts import ResolveUsernameRequest
from telethon.tl.types import ChannelParticipantsSearch, InputChannel

# First you need create app on https://my.telegram.org
api_id =
api_hash = ''
phone = '+'
limit = 100


def get_chat_info(username, client):
    try:
        chat = client(ResolveUsernameRequest(username))
    except UsernameNotOccupiedError:
        print('Chat/channel not found!')
        sys.exit()
    result = {
        'chat_id': chat.peer.channel_id,
        'access_hash': chat.chats[0].access_hash
    }
    return result


def dump_users(chat, client):
    counter = 0
    offset = 0
    chat_object = InputChannel(chat['chat_id'], chat['access_hash'])
    all_participants = []
    print('Process...')
    while True:
        participants = client.invoke(GetParticipantsRequest(
                    chat_object, ChannelParticipantsSearch(''), offset, limit
                ))
        if not participants.users:
            break
        all_participants.extend(['{} {}'.format(x.id, x.username)
                           for x in participants.users])
        users_count = len(participants.users)
        offset += users_count
        counter += users_count
        print('{} users collected'.format(counter))
        sleep(2)
    with open('users.txt', 'w') as file:
        file.write('\n'.join(map(str, all_participants)))


def main():
    channel_name = input('Input a channel name, without "@": ')
    client = TelegramClient('current-session', api_id, api_hash)
    print('Connecting...')
    client.connect()
    if not client.is_user_authorized():
        try:
            client.send_code_request(phone)
            print('Sending a code...')
            client.sign_in(phone, code=input('Enter code: '))
            print('Successfully!')
        except FloodWaitError as FloodError:
            print('Flood wait: {}.'.format(FloodError))
            sys.exit()
        except SessionPasswordNeededError:
            client.sign_in(password=getpass('Enter password: '))
            print('Successfully!')
    dump_users(get_chat_info(channel_name, client), client)
    print('Done!')

if __name__ == '__main__':
    main()
 

nikitos_zakatos

Заглянувший
Заглянувший
N

nikitos_zakatos

Заглянувший
Заглянувший
Сообщения
1
Реакции
0
Спасибо, нужно затестить будет, давно ищу что-то подобное...
Мог бы лайк поставить, поставил. (А так, подумаю немного, вдруг выложу тоже какую нибудь годноту и получиться ускорить процесс :-) )
 

Ibesthhh

Заглянувший
Заглянувший
I

Ibesthhh

Заглянувший
Заглянувший
Сообщения
1
Реакции
0
Эхх если бы был спамер который по пиар чатам бомбит! Продают за 900р) А так спасибо!
Python:
import sys
from getpass import getpass
from time import sleep

from telethon import TelegramClient
from telethon.errors import SessionPasswordNeededError
from telethon.errors.rpc_errors_400 import UsernameNotOccupiedError
from telethon.errors.rpc_errors_420 import FloodWaitError
from telethon.tl.functions.channels import GetParticipantsRequest
from telethon.tl.functions.contacts import ResolveUsernameRequest
from telethon.tl.types import ChannelParticipantsSearch, InputChannel

# First you need create app on https://my.telegram.org
api_id =
api_hash = ''
phone = '+'
limit = 100


def get_chat_info(username, client):
    try:
        chat = client(ResolveUsernameRequest(username))
    except UsernameNotOccupiedError:
        print('Chat/channel not found!')
        sys.exit()
    result = {
        'chat_id': chat.peer.channel_id,
        'access_hash': chat.chats[0].access_hash
    }
    return result


def dump_users(chat, client):
    counter = 0
    offset = 0
    chat_object = InputChannel(chat['chat_id'], chat['access_hash'])
    all_participants = []
    print('Process...')
    while True:
        participants = client.invoke(GetParticipantsRequest(
                    chat_object, ChannelParticipantsSearch(''), offset, limit
                ))
        if not participants.users:
            break
        all_participants.extend(['{} {}'.format(x.id, x.username)
                           for x in participants.users])
        users_count = len(participants.users)
        offset += users_count
        counter += users_count
        print('{} users collected'.format(counter))
        sleep(2)
    with open('users.txt', 'w') as file:
        file.write('\n'.join(map(str, all_participants)))


def main():
    channel_name = input('Input a channel name, without "@": ')
    client = TelegramClient('current-session', api_id, api_hash)
    print('Connecting...')
    client.connect()
    if not client.is_user_authorized():
        try:
            client.send_code_request(phone)
            print('Sending a code...')
            client.sign_in(phone, code=input('Enter code: '))
            print('Successfully!')
        except FloodWaitError as FloodError:
            print('Flood wait: {}.'.format(FloodError))
            sys.exit()
        except SessionPasswordNeededError:
            client.sign_in(password=getpass('Enter password: '))
            print('Successfully!')
    dump_users(get_chat_info(channel_name, client), client)
    print('Done!')

if __name__ == '__main__':
    main()
 

Сверху Снизу