У объекта «Клиент» нет атрибута «send_message» - PullRequest
0 голосов
/ 02 октября 2018

Когда run выдаст это на консоли, вы можете это исправить?

import feedparser
import discord
import asyncio

url = 'http://blog.counter-strike.net/index.php/feed/'

Client = discord.Client()
global last_id
last_id = []

#---Edit this before running the bot------
#1] Add the App Bot User Token you got from discord here
token = ...
#2] Add the Discord Channel IDs to which the bot will message when CSGO updates .
#bot has to be a part of the group to which the channel belongs . duh
channel_id = ['496709417203662848', '496709455816294411', '496709586196365323']

async def print_console(text):
    await Client.wait_until_ready()
    print(text)
    for num in channel_id:
        await Client.send_message(Client.get_channel(num),text)

@Client.event
async def on_ready():
    await Client.change_presence(game=discord.Game(name='CSGO-Updates'))
    print('Logged in as')
    print(Client.user.name)
    print(Client.user.id)
    print('------')

@Client.event
async def on_message(message):
    if message.content.startswith('!check'):
        await Client.send_message(message.channel,'bot Running')
    if message.content.startswith('!help'):
        help_msg = '***the currently active commands are:***\n ```css\n{}\n``` \n'
        text = ' !help : displays the help documentation\n !check : checks if the bot is running,returns 0 or no message if bot is having problems\n !madeby : Steam URL of the bot Creator \n '
        await Client.send_message(message.channel, help_msg.format(text))
    if message.content.startswith('!madeby'):
        msg = ' *made by:* \n http://steamcommunity.com/id/zero_aak'
        await Client.send_message(message.channel, msg)

async def main():
    global last_id
    feed = feedparser.parse(url)
    for index in feed.entries:
        last_id.append(index.id)
    print('primary scan complete')
    await print_console('bot started , use !help for help')
    while True:
        await asyncio.sleep(20)
        feed = feedparser.parse(url)
        for item in feed.entries:
            if item.id not in last_id:
                last_id.append(item.id)
                await print_console(item.link)

Client.loop.create_task(main())
Client.run(token)

Вот что отображается на консоли:

C:\Users\FeNka\Downloads\Discord-CSGO-Update-bot-master\Discord-CSGO-Update-bot-master>python bot.py
primary scan complete
bot started , use !help for help
Task exception was never retrieved
future: <Task finished coro=<main() done, defined at bot.py:44> exception=AttributeError("'Client' object has no attribute 'send_message'")>
Traceback (most recent call last):
  File "bot.py", line 50, in main
    await print_console('bot started , use !help for help')
  File "bot.py", line 22, in print_console
    await Client.send_message(Client.get_channel(num),text)
AttributeError: 'Client' object has no attribute 'send_message'
Ignoring exception in on_ready
Traceback (most recent call last):
  File "C:\Users\FeNka\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\client.py", line 225, in _run_event
    await coro(*args, **kwargs)
  File "bot.py", line 26, in on_ready
    await Client.change_presence(game=discord.Game(name='CSGO-Updates'))
TypeError: change_presence() got an unexpected keyword argument 'game'

Если необходимо, вот руководство поЗапустите его самостоятельно:

  1. Установите Python, если у вас его еще нет (рекомендуемая версия 3.6 +)
  2. Создайте новое приложение на Discord здесь: https://discordapp.com/developers/applications/me
  3. Добавьте пользователя бота в приложение и сохраните токен для дальнейшего использования.
  4. Получите идентификатор клиента приложения
  5. Используйте эту ссылку, чтобы добавить бота на сервер, замените CLIENT_IDв URL-адресе с идентификатором клиента, который вы получили: https://discordapp.com/oauth2/authorize?client_id=CLIENT_ID&scope=bot&permissions=0
  6. Включите режим разработчика в Настройки пользователя -> Внешний вид -> Включить режим разработчика.
  7. Получите идентификатор канала, щелкнув правой кнопкой мыши канал,сохраните его для дальнейшего использования.
  8. Откройте bot.py в блокноте и отредактируйте токен бота и идентификатор канала в указанных местах.
  9. Запустите bot.py в python.
  10. Ну вот, все готово.Используйте !help, чтобы увидеть, работает ли бот:)

Команды:

!help : displays the help dialogue
!check : checks if the bot is running or not 
!madeby : get my steam profile url to contact me

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

Чтобы помочь вам, мне нужно знать версию файла discord.py, которую вы используете.Вы можете попробовать:

await client.change_presence(activity=discord.Game(name="CSGO-Updates"))

Просто сделайте

import discord
print(discord.__version__)
0 голосов
/ 02 октября 2018

Вы, вероятно, на discord.py переписать.Сделайте это:

import discord
print(discord.__version__)

Если вы получаете 1.0.0a, вы перезаписываете, 0.16.0 асинхронно.

...