Sfoglia il codice sorgente

Allow multiple seums in one call in Telegram bot

Camille Masset 5 anni fa
parent
commit
abe85fa2af
1 ha cambiato i file con 16 aggiunte e 6 eliminazioni
  1. 16 6
      bot/views/telegram.py

+ 16 - 6
bot/views/telegram.py

@@ -153,14 +153,24 @@ def webhook(request):
153 153
             # it's a /seum cmd
154 154
             m = re.sub(seum_cmd, r"\3", text)
155 155
             maybe_counter = m.split(' ')[0]
156
-            try:
157
-                yes_counter = Counter.objects.get(trigramme=maybe_counter)
156
+            # allow multiple seums: /seum ABC+DEF Message
157
+            counters = [maybe_counter[i:i+3] for i in range(0, len(maybe_counter), 4)]
158
+            yes_counters = Counter.objects.filter(trigramme__in=counters)
159
+            seums_to_throw = []
160
+            user_counter = telegram_user.counter
161
+            if len(yes_counters):
158 162
                 seum_message = ' '.join(m.split(' ')[1:])
159
-            except Counter.DoesNotExist:
160
-                yes_counter = telegram_user.counter
161
-                seum_message = m
163
+                for counter in yes_counters:
164
+                    seums_to_throw.append((user_counter, counter, seum_message))
165
+                # for non existing trigrams, we throw the seum to the seum giver
166
+                for not_a_counter in set(counters) - set([c.trigramme for c in yes_counters]):
167
+                    seums_to_throw.append((user_counter, user_counter,
168
+                                           f"Trigramme {not_a_counter} qui n'existe pas du seum"))
169
+            else:
170
+                seums_to_throw.append((user_counter, user_counter, m))
162 171
 
163
-            perform_reset(telegram_user.counter, yes_counter, seum_message)
172
+            for (who, counter, message) in seums_to_throw:
173
+                perform_reset(who, counter, message)
164 174
     except TelegramUser.DoesNotExist:
165 175
         print('in that case we send a link to the user')
166 176
         if chat['type'] == 'private' and chat['id'] == telegram_user_id: