mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Some useful filters
Created useful filters that can be used in message handlers. Created some examples on using them.
This commit is contained in:
parent
4e37662ab3
commit
5f8c75816e
16
examples/id_filter_example.py
Normal file
16
examples/id_filter_example.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import telebot
|
||||||
|
|
||||||
|
bot = telebot.TeleBot('TOKEN')
|
||||||
|
|
||||||
|
|
||||||
|
# Chat id can be private or supergroups.
|
||||||
|
@bot.message_handler(chat_id=[12345678], commands=['admin']) # chat_id checks id corresponds to your list or not.
|
||||||
|
def admin_rep(message):
|
||||||
|
bot.send_message(message.chat.id, "You are allowed to use this command.")
|
||||||
|
|
||||||
|
@bot.message_handler(commands=['admin'])
|
||||||
|
def not_admin(message):
|
||||||
|
bot.send_message(message.chat.id, "You are not allowed to use this command")
|
||||||
|
|
||||||
|
|
||||||
|
bot.polling(non_stop=True)
|
17
examples/text_filter_example.py
Normal file
17
examples/text_filter_example.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import telebot
|
||||||
|
|
||||||
|
bot = telebot.TeleBot('TOKEN')
|
||||||
|
|
||||||
|
|
||||||
|
# Check if message starts with @admin tag
|
||||||
|
@bot.message_handler(text_startswith="@admin")
|
||||||
|
def start_filter(message):
|
||||||
|
bot.send_message(message.chat.id, "Looks like you are calling admin, wait...")
|
||||||
|
|
||||||
|
# Check if text is hi or hello
|
||||||
|
@bot.message_handler(text=['hi','hello'])
|
||||||
|
def text_filter(message):
|
||||||
|
bot.send_message(message.chat.id, "Hi, {name}!".format(name=message.from_user.first_name))
|
||||||
|
|
||||||
|
|
||||||
|
bot.polling(non_stop=True)
|
@ -185,7 +185,7 @@ class TeleBot:
|
|||||||
self.poll_answer_handlers = []
|
self.poll_answer_handlers = []
|
||||||
self.my_chat_member_handlers = []
|
self.my_chat_member_handlers = []
|
||||||
self.chat_member_handlers = []
|
self.chat_member_handlers = []
|
||||||
self.custom_filters = {}
|
self.custom_filters = {'text': util.TextFilter(), 'text_contains': util.TextContains(), 'chat_id': util.UserFilter(), 'text_startswith': util.TextStarts()}
|
||||||
|
|
||||||
if apihelper.ENABLE_MIDDLEWARE:
|
if apihelper.ENABLE_MIDDLEWARE:
|
||||||
self.typed_middleware_handlers = {
|
self.typed_middleware_handlers = {
|
||||||
|
@ -485,3 +485,63 @@ class AdvancedCustomFilter(ABC):
|
|||||||
Perform a check.
|
Perform a check.
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class TextFilter(AdvancedCustomFilter):
|
||||||
|
"""
|
||||||
|
Filter to check Text message.
|
||||||
|
key: text
|
||||||
|
|
||||||
|
Example:
|
||||||
|
@bot.message_handler(text=['account'])
|
||||||
|
"""
|
||||||
|
|
||||||
|
key = 'text'
|
||||||
|
|
||||||
|
def check(self, message, text):
|
||||||
|
if type(text) is list:return message.text in text
|
||||||
|
else: return text == message.text
|
||||||
|
|
||||||
|
class TextContains(AdvancedCustomFilter):
|
||||||
|
"""
|
||||||
|
Filter to check Text message.
|
||||||
|
key: text
|
||||||
|
|
||||||
|
Example:
|
||||||
|
# Will respond if any message.text contains word 'account'
|
||||||
|
@bot.message_handler(text_contains=['account'])
|
||||||
|
"""
|
||||||
|
|
||||||
|
key = 'text_contains'
|
||||||
|
|
||||||
|
def check(self, message, text):
|
||||||
|
return text in message.text
|
||||||
|
|
||||||
|
class UserFilter(AdvancedCustomFilter):
|
||||||
|
"""
|
||||||
|
Check whether chat_id corresponds to given chat_id.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
@bot.message_handler(chat_id=[99999])
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
key = 'chat_id'
|
||||||
|
def check(self, message, text):
|
||||||
|
return message.chat.id in text
|
||||||
|
|
||||||
|
|
||||||
|
class TextStarts(AdvancedCustomFilter):
|
||||||
|
"""
|
||||||
|
Filter to check whether message starts with some text.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
# Will work if message.text starts with 'Sir'.
|
||||||
|
@bot.message_handler(text_startswith='Sir')
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
key = 'text_startswith'
|
||||||
|
def check(self, message, text):
|
||||||
|
return message.text.startswith(text)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user