#python #django #bots #chatbot
Вопрос:
я хотел бы, чтобы бот линии отправлял все классы, хранящиеся в базе данных, в определенный день, в зависимости от ввода пользователя, через line messenger.
например,пользователь вводит «привет», бот линии отвечает «привет», пользователь вводит «понедельник», бот линии отправляет расписание занятий на понедельник, пользователь вводит «список учащихся(имя преподавателя)», бот линии отправляет всех учащихся в списке этого преподавателя
до сих пор я могу получать эхо, бот линии также хранит пользовательские данные в базе данных модели.
бот может различать типы сообщений (например, «текст», «изображение» и т. Д.).
все, что я, кажется, делаю, останавливает отправку основных сообщений.
Как лучше всего написать циклы, необходимые для получения желаемого ответа?
Я надеялся использовать информацию таким образом и каким-то образом передать ее в сообщение
data = Lessons.objects.all().filter(
headed_by__name="Tutor Name").filter(day__icontains="
Monday")
ниже не работает и останавливает работу остальных функций elif.
elif event.message.type=="text" | event.message.text=="Monday" :
message.append(TextSendMessage(text='Monday? Coming
right up'))
line_bot_api.reply_message(event.reply_token,message)
и это код, который я использую для получения сообщений в настоящее время
@csrf_exempt
def callback(request):
if request.method == "POST":
message=[]
signature=request.META['HTTP_X_LINE_SIGNATURE']
body=request.body.decode('utf-8')
message.append(TextSendMessage(text=str(body)))
try:
events = parser.parse(body,signature)
except InvalidSignatureError:
return HttpResponseForbidden()
except LineBotApiError:
return HttpResponseBadRequest()
for event in events:
if isinstance(event, MessageEvent):
print(event.message)
if event.message.type=="text":
message.append(TextSendMessage
(text='Hello,nhow
can I help you today?'))
line_bot_api.reply_message(
event.reply_token,message)
elif event.message.type=="image":
message.append(TextSendMessage(text='image
message'))
line_bot_api.reply_message(event.reply_token,
message)
elif event.message.type=="location":
message.append(TextSendMessage(text='location
message'))
line_bot_api.reply_message(event.reply_token,
message)
elif event.message.type=="video":
message.append(TextSendMessage(text='video
message'))
line_bot_api.reply_message(event.reply_token,
message)
elif event.message.type=="sticker":
message.append(TextSendMessage(text='sticker
message'))
line_bot_api.reply_message(event.reply_token,
message)
elif event.message.type=="audio":
message.append(TextSendMessage(text='audio
message'))
line_bot_api.reply_message(event.reply_token,
message)
elif event.message.type=="file":
message.append(TextSendMessage(text='file
message'))
line_bot_api.reply_message(event.reply_token,
message)
return HttpResponse()
else:
return HttpResponseBadRequest
мои уроки model.py
class Lessons(models.Model):
student = models.ForeignKey(Students,
on_delete=models.SET_NULL, null=True)
headed_by = models.ForeignKey(Tutors,
on_delete=models.SET_NULL, null=True)
day = models.CharField(max_length=4,
choices=DAY_CHOICES, null=True)
start_time = models.TimeField(null=True, blank=True)
type = models.CharField(max_length=7,
choices=TYPE_CHOICES, null=True)
price_band = models.CharField(max_length=7,
choices=PAYMENT_TYPE_CHOICES, blank=True, null=True)
created = models.DateTimeField(auto_now_add=True )