Skip to content

Commit c15371e

Browse files
authored
Merge pull request python-telegram-bot#642 from evgfilim1/new-filters
New filters
2 parents 6470597 + f66076b commit c15371e

2 files changed

Lines changed: 72 additions & 6 deletions

File tree

telegram/ext/filters.py

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,68 @@ def filter(self, message):
214214

215215
class _StatusUpdate(BaseFilter):
216216

217+
class _NewChatMembers(BaseFilter):
218+
219+
def filter(self, message):
220+
return bool(message.new_chat_members)
221+
222+
new_chat_members = _NewChatMembers()
223+
224+
class _LeftChatMember(BaseFilter):
225+
226+
def filter(self, message):
227+
return bool(message.left_chat_member)
228+
229+
left_chat_member = _LeftChatMember()
230+
231+
class _NewChatTitle(BaseFilter):
232+
233+
def filter(self, message):
234+
return bool(message.new_chat_title)
235+
236+
new_chat_title = _NewChatTitle()
237+
238+
class _NewChatPhoto(BaseFilter):
239+
240+
def filter(self, message):
241+
return bool(message.new_chat_photo)
242+
243+
new_chat_photo = _NewChatPhoto()
244+
245+
class _DeleteChatPhoto(BaseFilter):
246+
247+
def filter(self, message):
248+
return bool(message.delete_chat_photo)
249+
250+
delete_chat_photo = _DeleteChatPhoto()
251+
252+
class _ChatCreated(BaseFilter):
253+
254+
def filter(self, message):
255+
return bool(message.group_chat_created or message.supergroup_chat_created or
256+
message.channel_chat_created)
257+
258+
chat_created = _ChatCreated()
259+
260+
class _Migrate(BaseFilter):
261+
262+
def filter(self, message):
263+
return bool(message.migrate_from_chat_id or message.migrate_to_chat_id)
264+
265+
migrate = _Migrate()
266+
267+
class _PinnedMessage(BaseFilter):
268+
269+
def filter(self, message):
270+
return bool(message.pinned_message)
271+
272+
pinned_message = _PinnedMessage()
273+
217274
def filter(self, message):
218-
return bool(message.new_chat_members or message.left_chat_member
219-
or message.new_chat_title or message.new_chat_photo
220-
or message.delete_chat_photo or message.group_chat_created
221-
or message.supergroup_chat_created or message.channel_chat_created
222-
or message.migrate_to_chat_id or message.migrate_from_chat_id
223-
or message.pinned_message)
275+
return bool(self.new_chat_members(message) or self.left_chat_member(message) or
276+
self.new_chat_title(message) or self.new_chat_photo(message) or
277+
self.delete_chat_photo(message) or self.chat_created(message) or
278+
self.migrate(message) or self.pinned_message(message))
224279

225280
status_update = _StatusUpdate()
226281

tests/test_filters.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,46 +123,57 @@ def test_filters_status_update(self):
123123

124124
self.message.new_chat_members = ['test']
125125
self.assertTrue(Filters.status_update(self.message))
126+
self.assertTrue(Filters.status_update.new_chat_members(self.message))
126127
self.message.new_chat_members = None
127128

128129
self.message.left_chat_member = 'test'
129130
self.assertTrue(Filters.status_update(self.message))
131+
self.assertTrue(Filters.status_update.left_chat_member(self.message))
130132
self.message.left_chat_member = None
131133

132134
self.message.new_chat_title = 'test'
133135
self.assertTrue(Filters.status_update(self.message))
136+
self.assertTrue(Filters.status_update.new_chat_title(self.message))
134137
self.message.new_chat_title = ''
135138

136139
self.message.new_chat_photo = 'test'
137140
self.assertTrue(Filters.status_update(self.message))
141+
self.assertTrue(Filters.status_update.new_chat_photo(self.message))
138142
self.message.new_chat_photo = None
139143

140144
self.message.delete_chat_photo = True
141145
self.assertTrue(Filters.status_update(self.message))
146+
self.assertTrue(Filters.status_update.delete_chat_photo(self.message))
142147
self.message.delete_chat_photo = False
143148

144149
self.message.group_chat_created = True
145150
self.assertTrue(Filters.status_update(self.message))
151+
self.assertTrue(Filters.status_update.chat_created(self.message))
146152
self.message.group_chat_created = False
147153

148154
self.message.supergroup_chat_created = True
149155
self.assertTrue(Filters.status_update(self.message))
156+
self.assertTrue(Filters.status_update.chat_created(self.message))
150157
self.message.supergroup_chat_created = False
151158

152159
self.message.migrate_to_chat_id = 100
153160
self.assertTrue(Filters.status_update(self.message))
161+
self.assertTrue(Filters.status_update.migrate(self.message))
154162
self.message.migrate_to_chat_id = 0
155163

156164
self.message.migrate_from_chat_id = 100
157165
self.assertTrue(Filters.status_update(self.message))
166+
self.assertTrue(Filters.status_update.migrate(self.message))
158167
self.message.migrate_from_chat_id = 0
159168

160169
self.message.channel_chat_created = True
161170
self.assertTrue(Filters.status_update(self.message))
171+
self.assertTrue(Filters.status_update.chat_created(self.message))
162172
self.message.channel_chat_created = False
163173

164174
self.message.pinned_message = 'test'
165175
self.assertTrue(Filters.status_update(self.message))
176+
self.assertTrue(Filters.status_update.pinned_message(self.message))
166177
self.message.pinned_message = None
167178

168179
def test_entities_filter(self):

0 commit comments

Comments
 (0)