Size: a a a

pyTelegramBotAPI.talks.ru

2020 February 01

s🇷

slair 🇷🇺 in pyTelegramBotAPI.talks.ru
но почитай доки то
источник

s🇷

slair 🇷🇺 in pyTelegramBotAPI.talks.ru
методов работы с юзерами не так уж и много
источник

EA

Eugene Artesius Pasko in pyTelegramBotAPI.talks.ru
Ребят, привет
Нужна задержка между выполнением комманд
источник

⁠А

⁠⁠⁠ Арсений 🛠️ in pyTelegramBotAPI.talks.ru
sleep
источник

⁠А

⁠⁠⁠ Арсений 🛠️ in pyTelegramBotAPI.talks.ru
c:
источник

KA

Kevin Atlas in pyTelegramBotAPI.talks.ru
Eugene Artesius Pasko
Ребят, привет
Нужна задержка между выполнением комманд
источник

EA

Eugene Artesius Pasko in pyTelegramBotAPI.talks.ru
К примеру, кто-то использовал одну и ту же команду много раз за короткое время, и она начала выполняться миллион раз
источник

EA

Eugene Artesius Pasko in pyTelegramBotAPI.talks.ru
А нужно только единожды
источник

EA

Eugene Artesius Pasko in pyTelegramBotAPI.talks.ru
Но ведь если sleep поставить, то это не отменит многоразового выполнения, разве нет?
источник

s🇷

slair 🇷🇺 in pyTelegramBotAPI.talks.ru
а какого рода слип то нужен?
источник

s🇷

slair 🇷🇺 in pyTelegramBotAPI.talks.ru
есть замечательный декоратор:
def async(func):
 def wrapper(*args, **kwargs):
   thr = Thread(target = func, args = args, kwargs = kwargs)
   thr.start()
 return wrapper
источник

s🇷

slair 🇷🇺 in pyTelegramBotAPI.talks.ru
юзать например так:
@async
def del_old_pictures():
 global img_del_delay, need_exit
 while True:
   now = time.time()
   filelist = os.listdir(del_folder)
   for fn in filelist:
     fpfn = os.path.join(del_folder, fn)
     if fn.endswith(".sh"):
       age = now - os.stat(fpfn).st_mtime
       if age>img_del_delay:
         os.system(fpfn)
   if need_exit:
     break
   time.sleep(60)
   if need_exit:
     break
источник

EA

Eugene Artesius Pasko in pyTelegramBotAPI.talks.ru
Нужно, чтобы действия в команде /start выполнились только один раз
источник

s🇷

slair 🇷🇺 in pyTelegramBotAPI.talks.ru
Eugene Artesius Pasko
Нужно, чтобы действия в команде /start выполнились только один раз
а что тут можно понять?
источник

EA

Eugene Artesius Pasko in pyTelegramBotAPI.talks.ru
Что кто-то просто наспамил коммандой
источник

EA

Eugene Artesius Pasko in pyTelegramBotAPI.talks.ru
И бот миллион раз одновременно запустился
источник

s🇷

slair 🇷🇺 in pyTelegramBotAPI.talks.ru
пфф, наспамить полюбому могут
просто если один раз /start отработал - помечай юзера что он "стартанутый" и далее игнорируй его старты
источник

s🇷

slair 🇷🇺 in pyTelegramBotAPI.talks.ru
Eugene Artesius Pasko
И бот миллион раз одновременно запустился
а это вообще как? думаешь на каждый /start запускается новый бот?
источник

⁠А

⁠⁠⁠ Арсений 🛠️ in pyTelegramBotAPI.talks.ru
users = {}

@bot.message_handler(commands="spam")
def spam(m):
now = datetime.now()
if (now - users[m.from_user.id]).seconds / 1000 > 10.0:
 bot.send_message(m.chat.id, "ok")
 users[m.from_user.id] = now
else:
 bot.send_message(m.chat.id, "spammer")
источник

⁠А

⁠⁠⁠ Арсений 🛠️ in pyTelegramBotAPI.talks.ru
А если так
источник