gpt4 book ai didi

python-3.x - 如何在discord.py中循环任务

转载 作者:行者123 更新时间:2023-12-04 12:08:04 27 4
gpt4 key购买 nike

我正在尝试制作我自己的小不和谐机器人,它可以从 Twitch 获取信息,但我对如何使机器人循环并检查条件感到困惑。

我希望机器人每隔几秒钟循环一段代码,以检查指定的 twitch channel 是否处于事件状态。

代码

import discord
from discord.ext import commands, tasks
from twitch import TwitchClient
from pprint import pformat


client = TwitchClient(client_id='<twitch token>')

bot = commands.Bot(command_prefix='$')

@bot.event
async def on_ready():
print('We have logged in as {0.user}'.format(bot))

@bot.command()
async def info(ctx, username):
response = await ctx.send("Querying twitch database...")
try:
users = client.users.translate_usernames_to_ids(username)
for user in users:
print(user.id)
userid = user.id
twitchinfo = client.users.get_by_id(userid)
status = client.streams.get_stream_by_user(userid)
if status == None:
print("Not live")
livestat = twitchinfo.display_name + "is not live"
else:
livestat = twitchinfo.display_name + " is " + status.stream_type
responsemsg = pformat(twitchinfo) + "\n" + livestat
await response.edit(content=responsemsg)
except:
await response.edit(content="Invalid username")

bot.run("<discord token>")

我希望机器人每 10 秒运行一次以下代码,例如:
status = client.streams.get_stream_by_user(<channel id>)
if status == None:
print("Not live")
livestat = twitchinfo.display_name + "is not live"
else:
livestat = twitchinfo.display_name + " is " + status.stream_type

我试过使用 @tasks.loop(seconds=10)尝试定制 async def每 10 秒重复一次,但似乎不起作用。

有任何想法吗?

最佳答案

discord.py 的较新版本不支持 client.command()为了达到同样的目的,我使用了以下代码段

import discord
from discord.ext import tasks
client = discord.Client()
@tasks.loop(seconds = 10) # repeat after every 10 seconds
async def myLoop():
# work


myLoop.start()

client.run('<your token>')

关于python-3.x - 如何在discord.py中循环任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61920560/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com