So, I have a bot written in python, and I can not seem to get a loop going. What I want to do is have the bot say something in chat every X amount of seconds. For example, let’s say every 10 minutes, so every 600 seconds, I want the bot to say something.
I tried to start a function to do this with asyncio but I keep getting an error saying it’s unable to respond to echo messages.
Any help is greatly appreciated.
Here’s the relevant code I have (I removed the extra functions and such that already work:
`
import os
from twitchio.ext import commands
set up the bot
TMI_TOKEN=“omitted oauth”
CLIENT_ID=“omitted client id”
BOT_NICK=“bot_name”
BOT_PREFIX="!"
CHANNEL=“channel_name”
bot = commands.Bot(
irc_token=TMI_TOKEN,
client_id=CLIENT_ID,
nick=BOT_NICK,
prefix=BOT_PREFIX,
initial_channels=[CHANNEL]
)
@bot.event
async def event_ready():
print(f"{BOT_NICK} is alive!")
ws = bot._ws
await ws.send_privmsg(CHANNEL, f"/me is alive!")
@bot.event
async def event_message(ctx):
# make sure the bot ignores itself and the streamer
if ctx.author.name.lower() == BOT_NICK.lower():
return
await bot.handle_commands(ctx)
if 'hi' in ctx.content.lower():
await ctx.channel.send(f"Hi, @{ctx.author.name}!")
@bot.command(name=“looper”)
async def looper(ctx):
#this is the function I want to run on a loop
start_forever_function() #or start forever function when bot is ready
async def start_forever_function():
await chan.send("Message " + str(time.gmtime()))
if name == “main”:
bot.run()
`