Как l oop функцию с помощью Discord.py - PullRequest
0 голосов
/ 07 августа 2020

Моя цель - «переключить» все oop, когда функция вызывается внутри винтика. Я хочу, чтобы функция принимала аргумент имени файла. Функция напечатает строку, которую она прочитала из текстового файла. Я хочу, чтобы это было l oop, пока я не вызову другую функцию, которая его отменит.

Discord py использует asyn c, я просто не знаю, как работать с al oop внутри функции.

Пример:

class Looptest:

   def __init__(self, client):

        self.client = client

    #This is responsible for playing the loop.
   async def play_loop(self, filename):

        filename = (path_to_txtfile)
        
        #loop the following code
        with open(filename, 'r') as f:
            line = f.readlines()
             print(line)

async def stop_loop(self):
    #stop the loop
    

1 Ответ

1 голос
/ 07 августа 2020

Вы можете использовать задачу , предоставленную API discord.py.

from discord.ext import commands, tasks

class LoopCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        # whatever else you want to do

    @tasks.loop(seconds=1)
    async def test_loop(self, filename):
        # do your file thingy here

    @commands.command(name="start_loop"):
    async def start_loop(self,*, filename: str):
        # check that the file exists
        self.test_loop.start(filename)
    @commands.command(name="stop_loop"):
    async def stop_loop(self):
        self.test_loop()

def setup(bot):
    bot.add_cog(LoopCog(bot))

Я не тестировал его, так как не могу прямо сейчас, может быть некоторые ошибки указаны выше, но l oop штука работает именно так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...