Помогите соединить две функции в одном файле Python. Юзербот на pyrogram
Помогите исправить код, чтобы в одном файле можно было запустить одновременно две функции, где async def auto_answer - отвечает за автоответ на сообщения, а async def main - за рассылку. У меня запускается только одна функция.
#данные бота
api_id =
api_hash =
interval = float(input('время задержки в секундах:____'))
text = ''
chat_ids = []
app = Client(name='me_client', api_id=api_id, api_hash=api_hash)
# автоответчик
text2 = ''
sp_p = []
@app.on_message(filters=filters.private)
async def auto_answer(event, message):
if message.from_user.id not in sp_p:
await app.send_message(chat_id=message.chat.id, text=text2)
print(f'Пользователь отправил сообщение: {message.text}')
time.sleep(0.25)
sp_p.append(message.from_user.id)
else:
pass
print(f'Получено новое сообщение: {message.text}')
# рассылка
async def main():
async with app:
async for dialog in app.get_dialogs():
if dialog.chat.type in [ChatType.GROUP, ChatType.SUPERGROUP]:
for chat_id in chat_ids:
try:
await app.send_message(chat_id=chat_id, text=text)
print(f'Сообщение отправлено в группу: {chat_id}')
except Flood as e:
print(f'Не удалось отправить сообщение в группу: {chat_id}')
except UserBannedInChannel as e:
print(f'Спам блокировка. {chat_id} ')
except NotAcceptable as e:
print(f'Не удалось отправить сообщение в группу: {chat_id}')
print('Рассылка выполнена.')
time.sleep(interval)
app.run(main())
Ответы (1 шт):
Автор решения: Asya
→ Ссылка
Вопрос решен. Может кому пригодится, вот код.
from pyrogram import Client, filters
import time
import asyncio
# Данные бота
api_id =
api_hash = ''
interval = float(input('Время задержки в секундах: '))
text = ''
chat_ids = []
text2 = ''
sp_p = []
client = Client('me_client', api_id=api_id, api_hash=api_hash)
@client.on_message(filters=filters.private)
async def auto_answer(_, message):
global sp_p
if message.from_user.id not in sp_p:
await client.send_message(chat_id=message.chat.id, text=text2)
print(f'Пользователь отправил сообщение: {message.text}')
time.sleep(0.25)
sp_p.append(message.from_user.id)
else:
print(f'Получено новое сообщение: {message.text}')
async def main():
global chat_ids
while True:
for chat_id in chat_ids:
try:
await client.send_message(chat_id=chat_id, text=text)
print(f'Сообщение отправлено в группу: {chat_id}')
except Exception as e:
print(f'Ошибка при отправке сообщения в группу: {chat_id}')
print('Рассылка выполнена.')
await asyncio.sleep(interval)
async def run():
await asyncio.gather(client.start(), main())
asyncio.get_event_loop().run_until_complete(run())