pyrogram timestamp: 'int' object has no attribute 'timestamp'
Написал userbot'а telegram через pyrogram
, хочу при помощи команды замутить половину чата. Однако, выдает следующую ошибку:
return int(dt.timestamp()) if dt else None
AttributeError: 'int' object has no attribute 'timestamp'
Мой код:
def thanos(_, msg):
chat = msg.text.split(".thanos ", maxsplit=1)[1]
members = [
x
for x in app.get_chat_members(chat)
if x.status not in ("administrator", "creator")
]
random.shuffle(members)
app.send_message(chat, "Щелчок Таноса ... *щёлк*")
for i in range(len(members) // 2):
try:
app.restrict_chat_member(
chat_id=chat,
user_id=members[i].user.id,
permissions=ChatPermissions(),
until_date=int(time.time() + 300),
)
app.send_message(chat, "Исчез " + members[i].user.first_name)
except FloodWait as e:
print("> waiting", e.x, "seconds.")
time.sleep(e.x)
Полный текст ошибки:
'int' object has no attribute 'timestamp'
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyrogram\dispatcher.py", line 242, in handler_worker
await self.loop.run_in_executor(
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\concurrent\futures\thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\Desktop\клиент\main.py", line 85, in thanos
app.restrict_chat_member(
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyrogram\sync.py", line 78, in async_to_sync_wrap
return asyncio.run_coroutine_threadsafe(coroutine, main_loop).result()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\concurrent\futures\_base.py", line 456, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\concurrent\futures\_base.py", line 401, in __get_result
raise self._exception
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyrogram\methods\chats\restrict_chat_member.py", line 83, in restrict_chat_member
until_date=utils.datetime_to_timestamp(until_date),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyrogram\utils.py", line 371, in datetime_to_timestamp
return int(dt.timestamp()) if dt else None
^^^^^^^^^^^^
AttributeError: 'int' object has no attribute 'timestamp'
Ответы (1 шт):
Автор решения: mrgervant
→ Ссылка
Согласно документации Вы должны передавать в функцию restrict_chat_member()
параметр until_date
только в формате datetime - но не в int
.
Если Вы смотрели/брали примеры на aiogram
, то там допустимо передавать int
, но это не работает в pyrogram
.
Для исправления уберите преобразование значения времени в int
и передайте datetime
:
from datetime import datetime, timedelta
###
restrict_time = datetime.now() + timedelta(seconds=300)
try:
app.restrict_chat_member(
chat_id=chat,
user_id=members[i].user.id,
permissions=ChatPermissions(),
until_date=restrict_time,
)
###