def main(): for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW and (action := event.obj['message'].get('action')): if action['type'] == 'chat_kick_user': vk.messages.removeChatUser( chat_id=event.chat_id, user_id=action['member_id'], )
if __name__ == '__main__': main() Не забудьте, что боту необходимо выдать права администратора беседы
Суть алгоритма заключается в том, что робот проверяет, нет ли стены справа, и если её нет, то выполняет следующее:
делает шаг вправо;закрашивает клетку, в которой находится;делает шаг вправо.Движение
Исходя из данного алгоритма, робот закрасит клетки, отмеченные на прикреплённом изображении.
Распишем выполнение алгоритма более детально:
(я пронумеровал клетки, чтобы было легче понять процесс)
(вместо "клетка ..." буду писать "К...")
справа свободно: робот из К1 перемещается в К2, закрашивает К2 (1) и перемещается в К3.справа свободно: робот перемещается в К4, закрашивает К4 (2) и перемещается в К5.справа свободно: робот перемещается в К6, закрашивает К6 (3) и перемещается в К7.справа свободно: робот перемещается в К8, закрашивает К8 (4) и перемещается в К9.справа не свободно: цикл больше не выполняется.
Отследить выход человека из беседы можно, проверяя сообщение на наличие ключа action с типом chat_kick_user.
Пример (Python 3.8+):
from vk_api import VkApi
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
ACCESS_TOKEN = '' # Подставьте свой!
GROUP_ID = # Подставьте свой!
vk_session = VkApi(token=ACCESS_TOKEN)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, GROUP_ID)
def main():
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW and (action := event.obj['message'].get('action')):
if action['type'] == 'chat_kick_user':
vk.messages.removeChatUser(
chat_id=event.chat_id,
user_id=action['member_id'],
)
if __name__ == '__main__':
main()
Не забудьте, что боту необходимо выдать права администратора беседы
Суть алгоритма заключается в том, что робот проверяет, нет ли стены справа, и если её нет, то выполняет следующее:
делает шаг вправо;закрашивает клетку, в которой находится;делает шаг вправо.ДвижениеИсходя из данного алгоритма, робот закрасит клетки, отмеченные на прикреплённом изображении.
Распишем выполнение алгоритма более детально:
(я пронумеровал клетки, чтобы было легче понять процесс)
(вместо "клетка ..." буду писать "К...")
справа свободно: робот из К1 перемещается в К2, закрашивает К2 (1) и перемещается в К3.справа свободно: робот перемещается в К4, закрашивает К4 (2) и перемещается в К5.справа свободно: робот перемещается в К6, закрашивает К6 (3) и перемещается в К7.справа свободно: робот перемещается в К8, закрашивает К8 (4) и перемещается в К9.справа не свободно: цикл больше не выполняется.ответ: 4.