Как сделать цикл discord py

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

discord-py-guide / tasks.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Cannot retrieve contributors at this time
70 lines (51 sloc) 4.2 KB

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Copy raw contents

Copy raw contents

Иногда возникает необходимость выполнять какую-либо задачу с определенным временным интервалом. Например, каждые X секунд/минут/часов сохранять какие-то данные или проверять какие-нибудь условия.

Чтобы не заморачиваться с циклом и задержками в коде самостоятельно, можно просто использовать функционал модуля discord.ext.tasks .

Using Cogs and embedded messages — Making a simple bot in Discord.py 2.0 — Part 3

Создадим задачу, которая каждые 10 секунд выводит в консоль пользователей, находящихся в голосовом канале.

Для начала подключим модуль:

from discord.ext import tasks

  • seconds : int / float — количество секунд, между итерациями выполнения задачи
  • minutes : int / float — количество минут, между итерациями выполнения задачи
  • hours : int / float — количество часов, между итерациями выполнения задачи

Также можно передать:

  • time : datetime.time — точное время запуска задачи
  • count : int — сколько раз необходимо выполнить задачу

Создадим функцию и в декораторе укажем интервал в 10 секунд:

Теперь прописываем логику функции:

Еще по теме:  Дискорд поменять пароль если забыл старый как

Теперь, задачу нужно запустить. Многие забывают это сделать и потом довольно часто возникает вопрос о том, почему же правильно прописанная задача не работает (Подробный разбор проблемы)

Задачу нужно запускать тогда, когда бот полностью готов к работе. А для этого, как нельзя лучше, подходит обработчик события on_ready() . Почитать про него можно здесь.

В результате должен получиться примерно такой код.

А в консоль каждые 10 секунд будет выводиться информация примерно следующего содержания:

Название сервера dennys ( Название голосового канала)

Источник: github.com

Как сделать цикл в discord.py переписать?

Бот должен что-то делать каждые 60 секунд. Я пытался использовать create_task, но он не работает (бот запустился, но ничего не произошло). Как это можно реализовать?

спросил(а) 2019-02-02T20:38:00+03:00 4 года, 4 месяца назад
добавить комментарий
пожаловаться

client.loop.create_task должен по-прежнему нормально работать с версией rewrite . Пример фоновой задачи в rewrite версии можно найти здесь.

from discord.ext import commands

Python: Making a Discord bot (Part 7: Cogs)


import asyncio

client = commands.Bot(command_prefix=’!’)

async def background_task():
await client.wait_until_ready()
counter = 0
channel = client.get_channel(123456) # Insert channel ID here
while not client.is_closed():
counter += 1
await channel.send(counter)
await asyncio.sleep(10)

client.loop.create_task(background_task())
client.run(‘token’)
ответил(а) 2019-02-03T12:19:00+03:00 4 года, 4 месяца назад
добавить комментарий
пожаловаться

Еще в рубрике

Discord.py Переписать — Как я могу получить разрешения пользователя в виде списка?
Discord.py переписать бот не работает в heroku, но работает локально
Как установить discord.py переписать?
on_member_update получение роли добавлено/удалено имя

Другие вопросы

Как я могу создать стиль для встраивания, чтобы взять его заголовок, описание и эскиз с определенной веб-страницы

Источник: progi.pro

Как использовать цикл в discord.py?

Эта команда позволяет пользователю выбрать, из скольких команд он хочет создать таблицу лидеров. Цикл для всех команд работает, но мне нужно что-то, что также показывало бы результат в цикле. Я хочу, чтобы он отправлял общие очки каждой команде, в которую вошел пользователь. Теперь он просто отправляет точки первого входа.

Еще по теме:  Как транслировать музыку в дискорде через soundpad

user13878676 23 авг ’20 в 13:05 2020-08-23 13:05
2020-08-23 13:05

2 ответа

Вы можете использовать вставку, чтобы она выглядела красиво. Я добавил две функции, которые вам следует использовать.

user13975447 23 авг ’20 в 13:40 2020-08-23 13:40
2020-08-23 13:40

Было бы неплохо создать командный класс, у которого были бы определенные атрибуты, такие как название команды, количество убийств, позиции и т. Д. Затем вы могли бы добавить все команды в массив или список, а затем просмотреть их, чтобы создать списки лидеров. и другие полезные функции.

Я рекомендую это видео на YouTube, в котором подробно рассказывается, как работает объектно-ориентированное программирование (ООП) в Python: https://www.youtube.com/watch?v=MikphENIrOo

Ваш командный класс может выглядеть примерно так:

Class Team: def __init__(name, kills, points): self.name = name self.kills = kills self.points = points

Тогда у вас может быть список

teams = []

и вы можете добавить в этот список любое количество команд, которое хочет пользователь

teams.append(Team(BestTeam, 10, 50))

Источник: stackru.com

Рейтинг
( Пока оценок нет )
Загрузка ...