conn = redis.Redis(host='localhost', port=6379, db=2, charset="utf-8", decode_responses=True)
TRIGGER = ['создать бота', 'нужен бот', 'сделать бота', 'сделать чат-бот', 'нужен кодер','нужен программист','нужен прогер','написать бот','кто делает бот','кто сделает бот','пишет бот','создаст бота']
@client.on(events.NewMessage) #апдейт на новые сообщения только из групп
async def hahdler_group(event):
if event.is_group == True:
r = re.compile("|".join(TRIGGER), flags=re.I)
list_count = r.findall(event.raw_text)
if len(list_count) >= 1:
if conn.get(event.from_id.user_id) == None: #чтобы не было повторов от одного id в разных группых в течении 200 сек
if not hashlib.md5(str(str(event.from_id.user_id)+event.raw_text).encode()).hexdigest() in hash_object: #проверяем дубилрование сообщений от одного юзера
out = ''.join(list_count)
await Bot.bot.send_message(id, "Триггер сработал на <b>"+str(list_count)+"</b>\nТекст сообщения: "+str(event.raw_text.replace(out,"<b>"+out+"</b>"))+"\nСсылка на сообщение: <i>t.me/c/"+str(event.peer_id.channel_id)+"/"+str(event.message.id)+"</i>", disable_web_page_preview=True)
conn.set(event.from_id.user_id, 1,ex = 200)
hash_object.append(hashlib.md5(str(str(event.from_id.user_id)+event.raw_text).encode()).hexdigest())
как реализовать что бы поиск тригер слов в сообщении срабатывал даже если они разделены
к примеру по таким тригерам
'создать бота', 'нужен бот', 'сделать бота', 'сделать чат-бот'
будут пролетать мимо сообщения вида
'создать кто может' 'сделать может кто бота?' 'чат-бот кто может сделать'
как реализовать поиск тригерслов в сообщении с условием что сообщение содержит оба тригер слова и между ними могут быть другие слова.
если прописать по отделььности каждое тригерслово слишком много ложных срабатываний