我正在处理的代码(正在寻找工作版本,底部有完整代码):
def a(number):
while number > 0:
@client.event
async def send_message():
channel.send("j")
number = number - 1
time.sleep(2)
试图让机器人发送垃圾邮件 j。原来我有:
def a(number):
while number > 0:
@client.event
async def on_message(message):
await message.channel.send("j")
number = number - 1
time.sleep(2)
但是在输入另一个命令之前它不会开始发送垃圾邮件 j。示例(不一致) !垃圾邮件-j (什么都没发生) !helloworld(只是一个测试命令,与 j 垃圾邮件代码无关) 机器人:(开始垃圾邮件 j) 我认为这是因为 await 部分,但我不知道如何摆脱它。
import discord
import os
import time
import threading
client = discord.Client()
def b():
while True:
@client.event
async def on_message(message):
message.channel.send("j")
if message.content.startswith('!stop'):
a(0)
print("did")
def a(number):
while number > 0:
@client.event
async def send_message():
channel.send("j")
number = number - 1
time.sleep(2)
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('!helloworld'):
await message.channel.send('working!')
if message.content.startswith('!spam-jprep'):
await message.channel.send("ready")
threading.Thread(target=a(10)).start()
#threading.Thread(target=b).start()
#while x > 0:
#if message.content.startswith('!stop'):
# x = 0
# print ("seen")
client.run(os.getenv('TOKEN'))
答案 0 :(得分:0)
我仍然不完全确定您在这里尝试做什么。如果您正在尝试创建一个简单的命令来发送垃圾邮件,则可以轻松完成,
@client.command()
async def spam(ctx):
while True:
await ctx.send("j")
有了这个,您还应该添加睡眠事件 await asyncio.sleep(10)
,这样它就不会受到速率限制。但这是一个使用 while True
的简单示例。
这是一个更好的例子,当您可以控制它时,它会简单地将垃圾邮件变量设置为 True
,这将设置 while true 循环来向您的信件或邮件发送垃圾邮件。
spam_j = True
@client.command()
async def spam(ctx):
global spam_j
spam_j= True
while true:
if not spam_j:
break
await ctx.send("j")
@client.command()
async def stop(ctx):
global spam_j
spam_j= False
await ctx.send('Stopped spamming')