webentwicklung-frage-antwort-db.com.de

AttributeError: Objekt 'Client' hat kein Attribut 'send_message' (Discord Bot)

Aus irgendeinem Grund funktioniert send_message auf meinem Discord-Bot nicht richtig und ich kann es trotzdem nicht finden, um es zu beheben.

import asyncio
import discord

client = discord.Client()

@client.async_event
async def on_message(message):
    author = message.author
   if message.content.startswith('!test'):
        print('on_message !test')
        await test(author, message)
async def test(author, message):
    print('in test function')
    await client.send_message(message.channel, 'Hi %s, i heard you.' % author)
client.run("key")
on_message !test
in test function
Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\indit\AppData\Roaming\Python\Python36\site-packages\discord\client.py", line 223, in _run_event
    yield from coro(*args, **kwargs)
  File "bot.py", line 15, in on_message
    await test(author, message)
  File "bot.py", line 21, in test
    await client.send_message(message.channel, 'Hi %s, i heard you.' % author)
AttributeError: 'Client' object has no attribute 'send_message'
9
cute

Sie führen wahrscheinlich die Neuschreibversion von discord.py aus, da discord.Client Objekt hat kein send_message Methode.

Um Ihr Problem zu beheben, können Sie es einfach haben als:

async def test(author, message):
    await message.channel.send('I heard you! {0.name}'.format(author))

aber für das, was ich sehe, empfehle ich die Verwendung der Befehlserweiterung

Dies macht das Erstellen eines Bots und von Befehlen für den Bot viel einfacher. Hier ist beispielsweise ein Code, der genau dasselbe tut wie Ihr Code

from discord.ext import commands

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

@bot.command()
async def test(ctx):
    await ctx.send('I heard you! {0}'.format(ctx.author))

bot.run('token')
10
mental