@Zettt13

Как реализовать ответ пользователю из текстового файла с шаблонами?

Есть сам скрипт, нужно чтобы при получении сообщения от пользователя, скрипт искал подходящий ответ в файле формата txt, в котором вопросы и ответы будут выглядеть таким образом:
Привет: Здравствуй
Как дела?: хорошо
Писал скрипт на библиотеке vk_api
import vk_api # Библиотека VK
from datetime import datetime # Библиотека DateTime
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType # Библиотека VK LongPool

# Настройки
token = "" # Личный access_token сообщества (Желателен полный доступ)
group_id = "175481630" # ID сообщества
server = "@id" # Владелец кода
longpool_sleep = "0.5" # Задержка проверки сообщений, зависит от нагрузки на сервер (Рекомендуется значение от 0.1 до 10)

# VK LongPool
vk_session = vk_api.VkApi(token = token) # Обработка access_token
longpoll = VkBotLongPoll(vk_session, group_id) # Данные для работы в сообществе
vk = vk_session.get_api() # Работа с VK API

# Info
version = "release 7.0" # Версия бота
api_version = "5.92" # Версия VK API
system = "LongPoll" # LongPoll или CallBack
language = "Python 3.7.2" # Язык и версия языка

# Time
servertime = str(datetime.strftime(datetime.now(), "%H:%M")) # Время сервера

# Сообщения
for event in longpoll.listen():

    if event.type == VkBotEventType.MESSAGE_NEW and event.obj.text.lower() == "test" or event.obj.text.lower() == "тест":
        vk.messages.send(peer_id = event.obj.peer_id, random_id = 0, message = "Tested!")
        vk.messages.send(peer_id = event.obj.peer_id, random_id = 0, message = "Отправьте команду help для получения списка комманд бота")
 
    if event.type == VkBotEventType.MESSAGE_NEW and event.obj.text.lower() == "help" or event.obj.text.lower() == "помощь":
        vk.messages.send(peer_id = event.obj.peer_id, random_id = 0, message = "Список комманд:\n\ntest или тест\nТестовая проверка\n\nhelp или помощь\nСписок комманд\n\ntime или время\nВремя сервера\n\nserver или сервер\nКто запустил сервер\n\ninfo или инфо\nИнформация о боте")

    if event.type == VkBotEventType.MESSAGE_NEW and event.obj.text.lower() == "time" or event.obj.text.lower() == "время":
        vk.messages.send(peer_id = event.obj.peer_id, random_id = 0, message = "Время сервера: " + servertime)

    if event.type == VkBotEventType.MESSAGE_NEW and event.obj.text.lower() == "server" or event.obj.text.lower() == "сервер":
    	vk.messages.send(peer_id = event.obj.peer_id, random_id = 0, message = "Сервер запустил: " + server)

    if event.type == VkBotEventType.MESSAGE_NEW and event.obj.text.lower() == "info" or event.obj.text.lower() == "инфо":
    	vk.messages.send(peer_id = event.obj.peer_id, random_id = 0, message = "Версия: " + version + "\nVK API: " + api_version + "\nСистема: " + system + "\nЯзык: " + language + "\n\nРазработчики")

time.sleep(longpool_sleep)
  • Вопрос задан
  • 315 просмотров
Решения вопроса 1
MaxLevs
@MaxLevs
Самый простой вариант
Назовём файл qa.txt
  1. Создать переменную db типа dict, ключом будет текст вопроса, а значением текст ответа
  2. Открыть файл qa.txt
  3. Читать файл построчно
  4. Каждую прочитанную строку разбивать через регулярные выражения (модуль re) на две части: вопрос и ответ
  5. Добавить очередную строку в словарь db

Когда файл будет полностью переведён в словарь db, можно будет получать ответы так
print(db["Как дела?"]) #хорошо

P.S. Исправь ответ, оформив код.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы