Пишу бота для дискорда. Пробовал многое. Не получается выполнить данное действие. Суть проблемы: Задан таймер(Например каждый час) бот должен выполнить заранее прописанную функцию. Что у меня получается? — Либо выполняется все по таймеру, но при этом больше бот не реагирует на команды.
Либо бот реагирует на команды в чате, но не выполняет функцию по таймеру.
Отслеживать
задан 2 сен 2020 в 7:43
60 1 1 серебряный знак 8 8 бронзовых знаков
Приведите проблемный код
2 сен 2020 в 7:52
2 сен 2020 в 8:11
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Библиотека discord.py асинхронная. Для подобных задач можно использовать Background Tasks. Для этого произведите импорт from discord.ext import tasks .
Теперь используйте следующий код:
Также хотел бы подметить, что использовать time.sleep() в асинхронном коде нельзя. Вместо этого есть asyncio.sleep() , соответственно если будете его использовать, не забудьте импортировать.
Отслеживать
ответ дан 4 ноя 2020 в 3:42
Egor Egorovsky Egor Egorovsky
90 1 1 золотой знак 1 1 серебряный знак 7 7 бронзовых знаков
Tempo Music Bot 2022 Setup Guide — HD Music / Effects / DJ Controls
from threading import Thread import schedule # pip install schedule import time class ScheduledFunction (Thread): def __init__(self, name): Thread.__init__(self) self.name = name def someFunc(self): print(«Running scheduled function») def run (self): schedule.every().second.do(self.someFunc) while True: schedule.run_pending() time.sleep(1) if __name__ == «__main__»: thrd = ScheduledFunction («Some name») thrd.start() while True: print(«Running the main thread») time.sleep(0.25)
Задан таймер(Например каждый час) бот должен.
Лучше сделать не через time.sleep() , а с помощью библиотеки schedule
Так как вы хотите и время считать, и чтобы бот в то же время мог работать — вам нужен дополнительный поток.
В коде выше — создаётся и запускается поток с именем Some name , в методе run() планируется выполнение другого метода по таймеру — schedule.every().second.do(self.someFunc) (можете использовать schedule.every().hour.do(self.someFunc) , чтобы выполнять функцию каждый час).
schedule.run_pending() time.sleep(1)
это нужно для того, чтобы scheduler мог отсчитывать время до следующего вызова метода.
А в main там временем начинается бесконечный цикл, выводящий просто текст.
Получается что-то вроде:
Running the main thread Running the main thread Running the main thread Running the main thread Running scheduled function Running the main thread
И так до бесконечности.
Из вывода программы видно, что ни выполнение time.sleep(1) в методе run() , ни while True в main не блокируют друг друга и они прекрасно работают вместе.
Теперь вам просто остаётся переписать часть своего кода для использования многопоточности и планировщика задач 🙂
Источник: ru.stackoverflow.com
How to use Tempo Bot on Discord
Tempo бот для Дискорд — обзор помощника
Продолжаем рассказывать про популярные фичи для Дискорда. Конечно, не можем не написать обзор про Tempo Discord bot. Если вы не первый день в Дискорде, то наверняка вы что-нибудь слышали о нём или даже пользовались помощником. Вот ссылочка на добавление. Итак, ниже – самое важное, что нужно знать про Темпо бота!
Для чего нужен
Tempo – это популярный музыкальный бот для Дискорда. Если коротко, то он позволяет управлять воспроизведением музыки на сервере и применять к ней фильтры.
При желании и правильной настройке можно обеспечить бесперебойное и высококачественное проигрывание музыки в удобном режиме. Вот несколько интересных функций, которые выполняет Tempo:
- получение текста песни, которая сейчас играет;
- изменение высоты тона музыки;
- перемешивание треков, чтобы они играли в случайном порядке.
Добавить
Держите ещё раз ссылку на добавление Темпо. Мы взяли её с официального сайта помощника.
- На главном экране нажмите Add to Discord.
- В появившемся окне в выпадающем списке выберите сервер, на который хотите добавить ассистента.
- Нажмите Продолжить .
- Выберите разрешения для Темпо.
- Нажмите Авторизовать и введите капчу.
Готово! Темпо добавился.
Настроить
После добавления виртуального ассистента, он пришлёт вам приветственное сообщение и расскажет общие правила пользования.
Как все роботы-модераторы в ДС, герой этого обзора тоже управляется командами. Вот некоторые из них:
- >help – справка, помощь;
- >clear – удалить очередь, не останавливая текущую композицию;
- >loop – добавление песни, которая сейчас проигрывается, в конец очереди;
- >pause – пауза;
- >filters – музыкальные фильтры;
- >speed – изменение скорости воспроизведения;
- >seek – перемотка трека.
Полный список Темпо бот команд смотрите на официальном сайте в разделе Команды.
Начать использование
И ещё немного про Tempo бот в Дискорде, как пользоваться помощником. Попробуйте поставить свой первый трек. Чтобы сделать это, зайдите на канал, и введите команду >play . Если вы задали поисковую выдачу, робот выдаст 20 результатов по этому запросу. Если URL, то песня воспроизведётся сразу.
В комментариях поделитесь своей оценкой Tempo bot. Вы пользуетесь им? Есть ли какие-то аналоги этого помощника?
Источник: discordgid.ru
Bump Reminder
Простой бот-таймер, который поможет вовремя поднимать сервер в топ, напоминая bump-ать на мониторингах.
Таймер заводится автоматически после успешного bump’а, поэтому бот работает «прямо из коробки».
По умолчанию напоминание состоит из команды бота соответствующего мониторинга, но его можно дополнить любым сообщением (упоминанием роли, например) через команду btm!setmessage.
Также присутствует команда btm!remaining для удобного отслеживания оставшегося времени для каждого мониторинг-бота на сервере.
По умолчанию бот работает на английском языке, поэтому сменить его можно командой btm!setlanguage ru.
Для остальных команд введи команду btm!help
Комментарии
Рейтинг бота: 1
Вам необходимо авторизоваться на сайте для того чтобы оставить комментарий.
Загрузить больше
Это обычное браузерное приложение, сделанное для удобства использования сайта. Указывая при авторизации свои данные от аккаунта Discord, мы никаким образом их не перехватываем. Мы — сообщество разработчиков, которое разрабатывает открытое ПО.
Привет! Хотим сказать, что мы используем cookie-файлы. Советуем ознакомиться с политикой использования нашего сайта.
Источник: boticord.top