Показать сообщение отдельно

  #4  
Старый 04.11.2021, 09:45
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

Цитата:
Сообщение от laiser  

Вот мой код, как я писал уже, что я вызываю эту функцию через бота, а он у меня ассинхронный, и в процессе работы отправляется смс в телегу.
Пробовал через threading, 1й поток нормально, а все последующие выдавали ошибки.

Код:





Код:
class Sendig:
    async def start(self, tokens, user_id, stream):
        self._user_id = user_id
        self._tokens = tokens
        self.st = stream

        tokens = tokens.split('\n')
        start = 0

        for i in range(stream):
            stop = start + len(tokens[i::stream])
            if tokens[start:stop]:
                await asyncio.sleep(1)
                self._task = asyncio.create_task(self._job(tokens[start:stop], i), name=str(user_id))
            start = stop

    async def _job(self, tokens, stream):
        await bot.send_message(self._user_id, f'Привет')
        # Код работы скрипты
        return True


А вот так вызывается:

Код:





Код:
@dp.message_handler(commands=['start'], state="*")
@dp.message_handler(text="Главное меню", state="*")
async def bot_start(message: types.Message, state: FSMContext):
    x = await Sendig().start('1\n2\n3', str(message.from_user.id), 3)

Python:





Код:
import
asyncio
class
Sendig
:
def
__init__
(
self
,
tokens
,
user_id
)
:
self
.
_user_id
=
user_id
        self
.
_tokens
=
tokens
async
def
start
(
self
)
:
tasks
=
[
]
for
x
in
range
(
0
,
len
(
self
.
_tokens
)
)
:
task
=
asyncio
.
create_task
(
self
.
_job
(
self
.
_tokens
[
x
]
)
,
name
=
str
(
self
.
_user_id
)
)
tasks
.
append
(
task
)
await
asyncio
.
gather
(
*
tasks
)
print
(
'end'
)
async
def
_job
(
self
,
tokens
)
:
print
(
str
(
tokens
)
,
'uI:'
,
str
(
self
.
_user_id
)
)
async
def
bot_start
(
)
:
arr
=
[
'342343242e'
,
'12312314rw'
,
'12312321d21'
]
sg
=
Sendig
(
arr
,
'123123123'
)
await
sg
.
start
(
)
asyncio
.
run
(
bot_start
(
)
)
 
Ответить с цитированием