D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Вот писал приколюху, сессия поднимается клиентским образом в телеграме и рандомно отвечает юзерам по базе сообщений и звуковых файлов, вступаете в канал, запускаете бота, иногда получается очень смешно. =)
Python: Скопировать в буфер обмена
Трололо база фраз и аудио прикреплена в ZIP архиве вместе с исходником, базы не помню где собрал (не мои), но очень интересно использовать в каналах ТГ где идут политические срачи.
Python: Скопировать в буфер обмена
Код:
import asyncio
import os
from telethon import TelegramClient, events, sync, utils
from telethon import functions, types
from mutagen.mp3 import MP3
import random as rand
# Получаем параметры для подключения к API по адресу:
# api_hash from https://my.telegram.org, under API Development.
api_id = 12345678
api_hash = ''
chat = -123456789 # Чат айди сами загуглите как искать
client = TelegramClient('komandos_kolya', api_id, api_hash)
file_govno = open('messages_from_chat.txt', 'r')
data = file_govno.readlines() # Читаем текстовый файл и построчно по элементам разбиваем в список
# генерация списка звуковых файлов #
directory = 'music'
files_mp3 = os.listdir(directory)
files_mp3_dir = [f'music/{files_mp3}' for files_mp3 in files_mp3]
# генерация списка звуковых файлов #
@client.on(events.NewMessage(chats=[chat]))
async def handler(event):
#print(event.raw_text) # Выводим все что пишут в чат
lol_trek = rand.choice(files_mp3_dir) # Выбираем случайный трек из папки
# Узнаем длину передаваемого трека #
f = MP3(lol_trek)
time_mp3 = int(f.info.length)
# Узнаем длину передаваемого трека #
# Генерируем список для эмуляции голосового эквалайзера #
audio_logarifm = []
n = 500
for i in range(n):
audio_logarifm.append(rand.randint(1, 31))
# Генерируем список для эмуляции голосового эквалайзера #
kakashka = rand.randint(1, 1000)
if kakashka > 900: # В зависимости от того какое число выпадет в переменную "kakashka" и зависит отправка голосового сообщения в чат
async with client.action(chat, 'record-audio'): # Отправляем команду в телегу что мы пишем голос (эмуляция поведения человека)
await asyncio.sleep(rand.randint(4, 15)) # Устанавливаем рандомную задержку перед отправкой мессаги в чат, чтобы быть похожим на человека. В данном случае задержка выставлена от 4 до 15 секунд
await event.reply(file=lol_trek, attributes=[types.DocumentAttributeAudio(
duration=time_mp3,
voice=True,
waveform=utils.encode_waveform(bytes(audio_logarifm) * 999)
)])
elif kakashka < 100: # В зависимости от того какое число выпадет в переменную "kakashka" и зависит отправка текстового сообщения в чат
async with client.action(chat, 'typing'): # Отправляем команду в телегу что печатаем текст (эмуляция поведения человека)
datarand = rand.choice(data)
await asyncio.sleep(rand.randint(15, 25)) # Интервал задержки перед отправкой
await event.reply(datarand)
client.start()
client.run_until_disconnected()
Трололо база фраз и аудио прикреплена в ZIP архиве вместе с исходником, базы не помню где собрал (не мои), но очень интересно использовать в каналах ТГ где идут политические срачи.