Использую API VK для автоматического добавления пользователей в закрытое сообщество:
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from datas import token
import datetime
def main():
vk_session = vk_api.VkApi(token=token)
vk = vk_session.get_api()
group_id = "ххх"
i = 0
longpoll = VkBotLongPoll(vk_session, group_id=group_id)
for event in longpoll.listen():
if event.type == VkBotEventType.GROUP_JOIN:
print(event.obj.user_id, end=' ')
try:
vk.groups.approveRequest(group_id=group_id, user_id=event.obj.user_id)
except Exception:
pass
i = i+1
print(f" Вступил в группу {datetime.datetime.today()}. Сегодня присоединилось {i} человек")
elif event.type == VkBotEventType.GROUP_LEAVE:
print(event.obj.user_id, end=' ')
print('Покинул группу!')
if __name__ == "__main__":
main()
На выводе получаю:
394277503 Вступил в группу 2023-01-08 18:24:30.795948. Сегодня присоединилось 1 человек
394277503 Вступил в группу 2023-01-08 18:24:31.239004. Сегодня присоединилось 2 человек
Один и тот же человек пытается добавится два раза, т.е. функция принимает его
Функция выполняется два раза по неизвестным мне причинам. Если закрыть на это глаза, то через некоторое время всё падает с ошибкой:
Traceback (most recent call last):
File "/home/vk/auto.py", line 33, in <module>
main()
File "/home/vk/auto.py", line 16, in main
for event in longpoll.listen():
File "/usr/local/lib/python3.9/dist-packages/vk_api/bot_longpoll.py", line 286, in listen
for event in self.check():
File "/usr/local/lib/python3.9/dist-packages/vk_api/bot_longpoll.py", line 255, in check
response = self.session.get(
File "/usr/local/lib/python3.9/dist-packages/requests/sessions.py", line 600, in get
return self.request("GET", url, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/requests/sessions.py", line 587, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.9/dist-packages/requests/sessions.py", line 701, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/requests/adapters.py", line 578, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='lp.vk.com', port=443): Read timed out. (read timeout=35)
Что нужно сделать для того, чтобы функция автодобавления отрабатывала без ошибок и не крашилась со временем?