# Friendly Telegram (telegram userbot) # Copyright (C) 2018-2019 The Authors # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . from .. import loader, utils import logging import asyncio logger = logging.getLogger(__name__) def register(cb): cb(SpamMod()) @loader.tds class SpamMod(loader.Module): """Annoys people really effectively""" strings = {"name": "Spam", "need_spam": "U wot? I need something to spam.", "spam_urself": "Go spam urself.", "nice_number": "Nice number bro.", "much_spam": "Haha, much spam."} def __init__(self): self.name = self.strings["name"] async def spamcmd(self, message): """.spam """ use_reply = False args = utils.get_args(message) logger.debug(args) if len(args) == 0: await utils.answer(message, self.strings["need_spam"]) return if len(args) == 1: if message.is_reply: use_reply = True else: await utils.answer(message, self.strings["spam_urself"]) return count = args[0] spam = (await message.get_reply_message()) if use_reply else message spam.message = " ".join(args[1:]) try: count = int(count) except ValueError: await utils.answer(message, self.strings["nice_number"]) return if count < 1: await utils.answer(message, self.strings["much_spam"]) return await message.delete() if count > 20: # Be kind to other people sleepy = 25 else: sleepy = 0 i = 0 size = 1 if sleepy else 100 while i < count: await asyncio.gather(*[message.respond(spam) for x in range(min(count, size))]) await asyncio.sleep(sleepy) i += size await self.allmodules.log("spam", group=message.to_id, data=spam.message + " (" + str(count) + ")")