这是我第一次编写不和谐机器人,我主要是在学习教程,但我想制作一个独特的游戏,所以我尝试自己制作。但是在搞了一段时间之后,我意识到我的代码中唯一有效的部分是 mcguccy 是一个白痴部分,而不是客户端。命令部分工作。
import discord
from discord.ext import commands
client = commands.Bot(command_prefix='!')
@client.command()
async def ping1(ctx):
await ctx.send("pong!")
@client.event
async def on_ready():
await client.change_presence(status=discord.Status.online, activity=discord.Game("cranking 90s on shitters"))
print("bot is ready!")
@client.event
async def on_member_join(member):
print(f'{member} has joined :weary:.')
@client.event
async def on_member_remove(member):
print(f'{member} has left :weary:')
@client.command()
async def helb(ctx):
await ctx.send('@everyone look at this idiot')
@client.command()
async def ping(ctx):
await ctx.send(f'here you go: {round(client.latency * 1000)}ms')
@client.command()
async def commands(ctx):
await ctx.send('1. helb it will help you. 2. ping it will tell you the bots ping. ')
@client.command()
async def overlord(ctx):
await ctx.send("muah hah hah YOUR SERVER IS MINE")
keywords = ["mcguccy is an idiot", "kick mcguccy", "i want to nuke the server"]
@client.event
async def on_message(message):
for i in range(len(keywords)):
if keywords[i] in message.content:
for j in range(20):
await message.channel.send(f"@everyone someone has spammed :weary:")
答案 0 :(得分:0)
这里有几点需要注意:
client
变量是 Bot
类型,而不是 {{ 1}} 类型。Client
这意味着您需要使用 client = commands.Bot(command_prefix='!')
装饰器而不是 @bot
装饰器:
@client
@client.command()
async def helb(ctx):
...
# Becomes
@bot.command()
async def helb(ctx):
...
方法。因此,机器人的事件循环不会启动。您需要初始化 Client event loop 以便机器人可以侦听要传递的命令:
.run()
该代码必须是文件中运行的最后一条语句,因为它会阻塞。
if __name__=='__main__':
client.run(TOKEN)
命令需要 API 令牌。如果您还没有该令牌,可以通过 creating a bot account 获得该令牌。如果确实有,则需要将其作为第一个参数传递给 .run()
方法。