При создании нового бота гораздо проще использовать шаблон, чем вспоминать, как же правильно все инициировать или копировать с другого бота. Шаблон страничного бота: import vk_api from vk_api.longpoll import VkLongPoll, VkEventType import json vk_session = vk_api.VkApi(token='token', api_version=5.131) api = vk_session.get_api() longpoll = VkLongPoll(vk_session, preload_messages=True) print("Бот запущен") while True: try: for event in longpoll.listen(): if event.type != VkEventType.MESSAGE_NEW and event.type != VkEventType.MESSAGE_EDIT: continue message = event.message_data # if not message['out']: continue # Если нужно, чтобы бот реагировал только на сообщения от хозяина страницы, нужно убрать комментирование на строке выше args = message['text'].split(" ") cmd = args[0].lower() if cmd == '!проверка': # Если нужно, чтобы бот редактировал отправленное сообщение: (я буду использовать именно этот способ) api.messages.edit(peer_id=message['peer_id'], message_id=message['id'], message='Проверка успешна!', keep_forward_messages=1) # Если нужно, чтобы бот отвечал новым сообщением: # api.messages.send(peer_id=message['peer_id'], message='Проверка успешна!', random_id=0, forward=json.dumps({'peer_id': message['peer_id'], 'conversation_message_ids': message['conversation_message_id'], 'is_reply': 1})) elif cmd == '!напиши': api.messages.edit(peer_id=message['peer_id'], message_id=message['id'], message=message['text'].replace(cmd+' ', ''), keep_forward_messages=1) elif cmd == '!параметрысбщ': api.messages.edit(peer_id=message['peer_id'], message_id=message['id'], message='У сообщения такие параметры:\n'+'\n'.join([str(value)+': '+str(message[value]) for value in message]), keep_forward_messages=1) except Exception as e: print(e) Python import vk_api from vk_api.longpoll import VkLongPoll, VkEventType import json vk_session = vk_api.VkApi(token='token', api_version=5.131) api = vk_session.get_api() longpoll = VkLongPoll(vk_session, preload_messages=True) print("Бот запущен") while True: try: for event in longpoll.listen(): if event.type != VkEventType.MESSAGE_NEW and event.type != VkEventType.MESSAGE_EDIT: continue message = event.message_data # if not message['out']: continue # Если нужно, чтобы бот реагировал только на сообщения от хозяина страницы, нужно убрать комментирование на строке выше args = message['text'].split(" ") cmd = args[0].lower() if cmd == '!проверка': # Если нужно, чтобы бот редактировал отправленное сообщение: (я буду использовать именно этот способ) api.messages.edit(peer_id=message['peer_id'], message_id=message['id'], message='Проверка успешна!', keep_forward_messages=1) # Если нужно, чтобы бот отвечал новым сообщением: # api.messages.send(peer_id=message['peer_id'], message='Проверка успешна!', random_id=0, forward=json.dumps({'peer_id': message['peer_id'], 'conversation_message_ids': message['conversation_message_id'], 'is_reply': 1})) elif cmd == '!напиши': api.messages.edit(peer_id=message['peer_id'], message_id=message['id'], message=message['text'].replace(cmd+' ', ''), keep_forward_messages=1) elif cmd == '!параметрысбщ': api.messages.edit(peer_id=message['peer_id'], message_id=message['id'], message='У сообщения такие параметры:\n'+'\n'.join([str(value)+': '+str(message[value]) for value in message]), keep_forward_messages=1) except Exception as e: print(e) Шаблон бота в сообществе: import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType import json vk_session = vk_api.VkApi(token='token', api_version=5.131) api = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, group_id=12345) # тут айди группы без минуса print("Бот запущен") while True: try: for event in longpoll.listen(): if event.type != VkBotEventType.MESSAGE_NEW: continue message = event.object.message args = message['text'].split(" ") cmd = args[0].lower() if cmd == '!проверка': api.messages.send(peer_id=message['peer_id'], message='Проверка успешна!', random_id=0, forward=json.dumps({'peer_id': message['peer_id'], 'conversation_message_ids': message['conversation_message_id'], 'is_reply': 1})) elif cmd == '!напиши': api.messages.send(peer_id=message['peer_id'], message=message['text'].replace(cmd+' ', ''), random_id=0, forward=json.dumps({'peer_id': message['peer_id'], 'conversation_message_ids': message['conversation_message_id'], 'is_reply': 1})) elif cmd == '!параметрысбщ': api.messages.send(peer_id=message['peer_id'], message='У сообщения такие параметры:\n'+'\n'.join([str(value)+': '+str(message[value]) for value in message]), random_id=0, forward=json.dumps({'peer_id': message['peer_id'], 'conversation_message_ids': message['conversation_message_id'], 'is_reply': 1})) except Exception as e: print(e) Python import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType import json vk_session = vk_api.VkApi(token='token', api_version=5.131) api = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, group_id=12345) # тут айди группы без минуса print("Бот запущен") while True: try: for event in longpoll.listen(): if event.type != VkBotEventType.MESSAGE_NEW: continue message = event.object.message args = message['text'].split(" ") cmd = args[0].lower() if cmd == '!проверка': api.messages.send(peer_id=message['peer_id'], message='Проверка успешна!', random_id=0, forward=json.dumps({'peer_id': message['peer_id'], 'conversation_message_ids': message['conversation_message_id'], 'is_reply': 1})) elif cmd == '!напиши': api.messages.send(peer_id=message['peer_id'], message=message['text'].replace(cmd+' ', ''), random_id=0, forward=json.dumps({'peer_id': message['peer_id'], 'conversation_message_ids': message['conversation_message_id'], 'is_reply': 1})) elif cmd == '!параметрысбщ': api.messages.send(peer_id=message['peer_id'], message='У сообщения такие параметры:\n'+'\n'.join([str(value)+': '+str(message[value]) for value in message]), random_id=0, forward=json.dumps({'peer_id': message['peer_id'], 'conversation_message_ids': message['conversation_message_id'], 'is_reply': 1})) except Exception as e: print(e) Другие скрипты на GitHub
годно конечно, но советую юзать всё же VKBottle тк он удобней) Вот шаблон для VKBottle: Установим библиотеку: pip install vkbottle import logging from vkbottle.bot import Bot, Message from vkbottle import GroupEventType, GroupTypes, Keyboard, Text, KeyboardButtonColor, VKAPIError, Callback # Логирование logging.basicConfig(level="DEBUG") # Токен bot = Bot(token="токен бота") # A = a | Z = z | Игнорирование регистра bot.labeler.vbml_ignore_case = True # это наша клавиатура keyboard_1 = Keyboard(one_time=False, inline=False) keyboard_1.add(Text("Клавиша 1"), color=KeyboardButtonColor.POSITIVE) keyboard_1.row() keyboard_1.add(Text("Клавиша 2"), color=KeyboardButtonColor.NEGATIVE) """ Существует несколько видов куда бот может отвечать: .message - обрабатывает сообщения и из бесед и из личных переписок .private_message - обрабатывает сообщения только из личных переписок .chat_message - обрабатывает сообщения только из бесед """ @bot.on.private_message(text="Привет") async def hi_handler(message: Message): users_info = await bot.api.users.get(message.from_id) await message.answer("Привет, {}.".format(users_info[0].first_name)) # Скидываем клавиатуру @bot.on.private_message(text="Клавиатура") async def keyboard_handler(message: Message): await message.answer("Отправил клавиатуру:", keyboard=keyboard_1.get_json()) # Запускаем бота в бесконечность bot.run_forever() Python import logging from vkbottle.bot import Bot, Message from vkbottle import GroupEventType, GroupTypes, Keyboard, Text, KeyboardButtonColor, VKAPIError, Callback # Логирование logging.basicConfig(level="DEBUG") # Токен bot = Bot(token="токен бота") # A = a | Z = z | Игнорирование регистра bot.labeler.vbml_ignore_case = True # это наша клавиатура keyboard_1 = Keyboard(one_time=False, inline=False) keyboard_1.add(Text("Клавиша 1"), color=KeyboardButtonColor.POSITIVE) keyboard_1.row() keyboard_1.add(Text("Клавиша 2"), color=KeyboardButtonColor.NEGATIVE) """ Существует несколько видов куда бот может отвечать: .message - обрабатывает сообщения и из бесед и из личных переписок .private_message - обрабатывает сообщения только из личных переписок .chat_message - обрабатывает сообщения только из бесед """ @bot.on.private_message(text="Привет") async def hi_handler(message: Message): users_info = await bot.api.users.get(message.from_id) await message.answer("Привет, {}.".format(users_info[0].first_name)) # Скидываем клавиатуру @bot.on.private_message(text="Клавиатура") async def keyboard_handler(message: Message): await message.answer("Отправил клавиатуру:", keyboard=keyboard_1.get_json()) # Запускаем бота в бесконечность bot.run_forever() Сама библиотека же: https://github.com/vkbottle/vkbottle