aboutsummaryrefslogtreecommitdiff
path: root/spellcheck.py
diff options
context:
space:
mode:
Diffstat (limited to 'spellcheck.py')
-rw-r--r--spellcheck.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/spellcheck.py b/spellcheck.py
new file mode 100644
index 0000000..b3a2b04
--- /dev/null
+++ b/spellcheck.py
@@ -0,0 +1,51 @@
+"""
+Ported from spellcheck.py - Sopel spell check Module
+Copyright © 2012, Elad Alfassa, <elad@fedoraproject.org>
+Copyright © 2012, Lior Ramati
+
+Licensed under the Eiffel Forum License 2.
+
+http://sopel.chat
+"""
+
+try:
+ import enchant
+except ImportError:
+ enchant = None
+
+
+@register_command('spellcheck', 'spell')
+def spellcheck(irc, hostmask, is_admin, args):
+ """
+ Says whether the given word is spelled correctly, and gives suggestions if
+ it's not.
+ """
+ if enchant is None:
+ irc.msg(args[0], 'Missing pyenchant module.')
+ return
+
+ word = args[1].rstrip()
+ if not word:
+ irc.msg(args[0], 'Usage: .spellcheck <word>')
+ return
+ if ' ' in word:
+ irc.msg(args[0], 'One word at a time, please')
+ return
+ dictionary_us = enchant.Dict('en_US')
+ dictionary_uk = enchant.Dict('en_GB')
+
+ if dictionary_uk.check(word):
+ if dictionary_us.check(word):
+ irc.msg(args[0], f'\u200b{word} is spelled correctly')
+ else:
+ irc.msg(args[0], f'\u200b{word} is spelled correctly (British)')
+ elif dictionary_us.check(word):
+ irc.msg(args[0], f'\u200b{word} is spelled correctly (American)')
+ else:
+ suggestions = {*dictionary_us.suggest(word)[:10],
+ *dictionary_uk.suggest(word)[:10]}
+ suggestions_str = ', '.join(f"'{suggestion}'"
+ for suggestion in sorted(suggestions))
+ irc.msg(args[0], f'\u200b{word} is not spelled correctly. '
+ f'Maybe you want one of these spellings: '
+ f'{suggestions_str}')