S
S
sbuw2021-05-08 13:54:12
Python
sbuw, 2021-05-08 13:54:12

Error creating Discord bot in python. How to decide?

Traceback (most recent call last):
  File "bot.py", line 55, in <module>
    async def help(ctx):
  File "C:\Users\Егор\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 1262, in decorator
    result = command(*args, **kwargs)(func)
  File "C:\Users\Егор\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 1432, in decorator
    raise TypeError('Callback is already a command.')
TypeError: Callback is already a command.
sys:1: RuntimeWarning: coroutine 'Command.__call__' was never awaited


Help solve the problem

import discord
from discord.ext import commands
import sqlite3

client = commands.Bot(command_prefix='!')

# help clear
@client.remove_command('help')

@client.event
async def on_ready():
  print('SolaBot готов к полёту!')
 

# Clear message
@client.command(pass_context = True)
@commands.has_permissions(administrator = True)
async def clear(ctx, amount = 100):
  await ctx.channel.purge(limit = amount)

# Clear command
@client.command(pass_context = True)
async def hello(ctx, amount = 1):
  await ctx.channel.purge(limit = amount)
  
  author = ctx.message.author
  await ctx.send(f'Hello,{author.mention}')

# Ban
@client.command(pass_context = True)
@commands.has_permissions(administrator = True)
async def ban(ctx, member: discord.Member, *, reason = None):
  await ctx.channel.purge(limit = 1)
  await member.ban(reason = reason)
  await ctx.send(f'ban {member.mention}')

# Kick
@client.command(pass_context = True)
@commands.has_permissions(administrator = True)
async def kick(ctx, member: discord.Member, *, reason = None):
  await ctx.channel.purge(limit = 1)
  await member.kick(reason = reason)
  await ctx.send(f'Kick {member.mention}')


# Mute
@client.command()
@commands.has_permissions(administrator = True)


# !help
@client.command(pass_context = True)
@commands.has_permissions(administrator = True)

async def help(ctx):
  await ctx.channel.purge(limit = 1)
  emb = discord.Embed(title = "Навигация по командам", colour = discord.Color.purple())
  emb.add_field(name = '{}clear'.format('!'), value = 'Очистка чата')
  emb.add_field(name = '{}kick'.format('!'), value = 'Удаления участика с сервера')
  emb.add_field(name = '{}ban'.format('!'), value = 'Ограничения доступа к серверу')
  emb.add_field(name = '{}hello'.format('!'), value = 'Разговор с ботом')
  emb.add_field(name = '{}bot'.format('!'), value = 'Online?')


  await ctx.send(embed = emb)



# Bot Online?
@client.command()
async def bot(ctx):
  await ctx.send(f' Bot Online! ')


# add role(join)
@client.event
async def on_member_join(member):
  channel = clinet.get.channel(839781279859081219)
  role = discord.utiles.get(member.guild.roles, id = 840530023782154317)
  await member.add_roles(role)
  await channel.send(emb = discord.Embed(descripttion = f'Пользователь ``{member.name}``, теперь с нами!', color = 0x0))


#Connect
token = open('token.txt', 'r').readline()
client.run(token)

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
soremix, 2021-05-08
@sbuw

# Mute
@client.command()
@commands.has_permissions(administrator = True)

# !help
@client.command(pass_context = True)
@commands.has_permissions(administrator = True)

async def help(ctx):

The same decorators were attached to one function

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question