From a184b304a136d6f2e3373e475433caf7665fde6d Mon Sep 17 00:00:00 2001 From: ks123 Date: Tue, 17 Mar 2020 09:09:20 +0200 Subject: (!zen Command): Added exact word check before `difflib`'s matching, due matching may not count exact word as best choice. --- bot/cogs/utils.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/bot/cogs/utils.py b/bot/cogs/utils.py index 024141d62..2ca2c028e 100644 --- a/bot/cogs/utils.py +++ b/bot/cogs/utils.py @@ -230,7 +230,16 @@ class Utils(Cog): await ctx.send(embed=embed) return - # handle if it's a search string + # Try to handle first exact word due difflib.SequenceMatched may use some other similar word instead + # exact word. + for i, line in enumerate(zen_lines): + if search_value.lower() in line.lower(): + embed.title += f" (line {i}):" + embed.description = line + await ctx.send(embed=embed) + return + + # handle if it's a search string and not exact word matcher = difflib.SequenceMatcher(None, search_value.lower()) best_match = "" -- cgit v1.2.3 From 95dae9bc7a7519c723539382848c02b9748d067f Mon Sep 17 00:00:00 2001 From: ks123 Date: Tue, 17 Mar 2020 19:32:48 +0200 Subject: (!zen Command): Under exact word match, change matching way from substring to sentence split iterate and equality check. --- bot/cogs/utils.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/bot/cogs/utils.py b/bot/cogs/utils.py index 2ca2c028e..0619296ad 100644 --- a/bot/cogs/utils.py +++ b/bot/cogs/utils.py @@ -233,11 +233,12 @@ class Utils(Cog): # Try to handle first exact word due difflib.SequenceMatched may use some other similar word instead # exact word. for i, line in enumerate(zen_lines): - if search_value.lower() in line.lower(): - embed.title += f" (line {i}):" - embed.description = line - await ctx.send(embed=embed) - return + for word in line.split(): + if word.lower() == search_value.lower(): + embed.title += f" (line {i}):" + embed.description = line + await ctx.send(embed=embed) + return # handle if it's a search string and not exact word matcher = difflib.SequenceMatcher(None, search_value.lower()) -- cgit v1.2.3