有没有办法让我做一个自动警告和自动踢的东西
Is There A Way i Can Make A Auto-Warn And Auto-Kick Thing
错误:没有,因为我没有制作代码/我不知道如何制作代码,代码如下
@bot.event
async def on_message(message):
test = 'test'
if test in message.content.lower():
await message.author.send('you have been warned for using "bad words" in the server')
我希望我的代码警告用户 3 次,然后在第 4 次机器人踢用户在服务器中编写测试,这可能吗?
您需要创建用户 ID 与他们收到警告次数的映射。在 bot 离线时保留此地图的最简单方法是将其存储在 JSON 文件中,尽管随着 bot 的扩展,您最终应该采用数据库。
from discord.ext.commands import Bot
from json import load
bot = Bot("!")
try:
with open("warns.json") as f:
warns = load(f)
except:
warns = {}
def should_warn(message):
return 'test' in message.content.lower()
async def warn_or_kick(member):
id = str(member.id)
if id not in warns:
warns[id] = 0
warns[id] += 1
if warns[id] >= 4:
await member.send("You have been kicked")
await member.kick()
else:
await member.send(f"This is warning number {warn[id]}")
with open("warns.json") as f:
dump(warns, f)
@bot.event
async def on_message(message):
if bot.user == message.author:
return
if should_warn(message):
await warn_or_kick(message.author)
else:
await bot.process_commands(message)
bot.run("TOKEN")
错误:没有,因为我没有制作代码/我不知道如何制作代码,代码如下
@bot.event
async def on_message(message):
test = 'test'
if test in message.content.lower():
await message.author.send('you have been warned for using "bad words" in the server')
我希望我的代码警告用户 3 次,然后在第 4 次机器人踢用户在服务器中编写测试,这可能吗?
您需要创建用户 ID 与他们收到警告次数的映射。在 bot 离线时保留此地图的最简单方法是将其存储在 JSON 文件中,尽管随着 bot 的扩展,您最终应该采用数据库。
from discord.ext.commands import Bot
from json import load
bot = Bot("!")
try:
with open("warns.json") as f:
warns = load(f)
except:
warns = {}
def should_warn(message):
return 'test' in message.content.lower()
async def warn_or_kick(member):
id = str(member.id)
if id not in warns:
warns[id] = 0
warns[id] += 1
if warns[id] >= 4:
await member.send("You have been kicked")
await member.kick()
else:
await member.send(f"This is warning number {warn[id]}")
with open("warns.json") as f:
dump(warns, f)
@bot.event
async def on_message(message):
if bot.user == message.author:
return
if should_warn(message):
await warn_or_kick(message.author)
else:
await bot.process_commands(message)
bot.run("TOKEN")