python - 'Client' 对象没有属性 'send_message'
问题描述
当运行在控制台上产生这个时,你能修复它吗?
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'
如果需要,这里有一个自己运行的指南:
- 如果您还没有 Python,请安装它(推荐版本 3.6+)
- 在 Discord 上创建一个新应用程序: https ://discordapp.com/developers/applications/me
- 将机器人用户添加到应用程序并保存令牌以供以后使用。
- 获取应用的客户端 ID
- 使用此链接将机器人添加到服务器,将 URL 中的 CLIENT_ID 替换为您获得的客户端 ID: https ://discordapp.com/oauth2/authorize?client_id=CLIENT_ID&scope=bot&permissions=0
- 在用户设置 -> 外观 -> 启用开发者模式中启用开发者模式。
- 通过右键单击频道获取频道ID,将其保存以备后用。
- 在记事本中打开 bot.py 并在给定位置中编辑机器人令牌和频道 ID。
- 在 python 中执行 bot.py。
- 你去,它已经完成了。用于
!help
查看机器人是否正在运行:)
命令:
!help : displays the help dialogue
!check : checks if the bot is running or not
!madeby : get my steam profile url to contact me
解决方案
为了帮助您,我需要知道您正在使用的 discord.py 版本。你可以试试:
await client.change_presence(activity=discord.Game(name="CSGO-Updates"))
做就是了
import discord
print(discord.__version__)
推荐阅读
- python - 在python中划分具有不同支配地位的两个矩阵
- python - 通过计算字符在python中剪切字符串
- cordova - 如何知道要使用哪个 Cordova 插件?
- audiokit - AudioKit 基于用户交互播放声音
- ios - 片段着色器函数中的属性访问。(IOS GLSL 3)
- sql - SQL UNION GROUP BY 分页
- json - JSON Schema If/Then/Else 枚举数组
- html - 如何使用 VB.net 从 HTML 文件中提取图像
- javascript - 从自定义钩子内部返回函数
- python - Matplotlib/Cartopy:pcolormesh 错误:ValueError:要解包的值太多(预期为 3)