不和谐和机器人制作:我似乎无法让我的机器人发布网络解析材料

Posted

技术标签:

【中文标题】不和谐和机器人制作:我似乎无法让我的机器人发布网络解析材料【英文标题】:discord and bot making: i cant seem to get my bot to post a web parsed material 【发布时间】:2018-10-16 07:21:03 【问题描述】:

第一次发帖!耶...所以。我正在制作一个机器人并遇到了一些麻烦。

在调用我编写的“stats”命令时,我似乎无法让我的机器人在我的不和谐频道中发布经过网络解析的材料。调用命令时我得到“403 未授权”!我正在尝试显示一些统计数据。

使用的python:

import asyncio
import datetime
from difflib import SequenceMatcher
import json
import urllib
from bs4 import BeautifulSoup
import discord
from discord.ext import commands
from discord.ext.commands import Bot
import requests
import html2text
from html.parser import HTMLParser
from html.entities import name2codepoint
client = discord.Client()

bot = commands.Bot(command_prefix='!', description='a halo server status check bot.')
#responce = requests.get(url)
#responce.text[:100]
import urllib.request

url = "http://chiperdilly.com/cestatstext/test.html"
html = urllib.request.urlopen(url).read()
mystr = html.decode("utf8")

soup = BeautifulSoup(html, "html.parser")
stringdata = (element.text for element in soup.find_all("div", "value"))
chanel = client.get_channel("437430094445674500")
for script in soup(["script", "style"]):
    script.extract

@bot.event
async def on_ready():
    print('dont let dreams be dreams...')
    print(bot.user.name)
    print(bot.user.id)

@bot.event
async def on_message(message):
    if message.content.startswith('!stats'):
        #await client.send_message(message.channel, content=stringdata)
        bot.say(message.channel, stringdata)
        #print(stringdata)
bot.run(myTOKEN)

使用的html:

<!DOCTYPE html>
<html>
    <head>
        <title>Halo CE Server Stats tool</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <meta http-equiv="refresh" content="10">
        <style type="text/css">
        </style>

        <link href="css/rhp_customized.css" rel="stylesheet" type="text/css">
    </head>
    <body background="images/hp_bg.jpg">
        <table  border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><img src="images/hp_top.jpg"   /></td>
  </tr>
  <tr>
    <td background="images/hp_tablebg.jpg"><img src="images/hp_serverinfo.jpg"   /></td>
  </tr>
  <tr>
    <td background="images/hp_tablebg.jpg" style="padding-left: 35px; padding-right: 50px;">
      <table  border="0" align="center" cellpadding="3" cellspacing="1">
        <tr>
          <td valign="top">
            <div align="center" class="value"><strong><font size="+1">!tht_serber!</font></strong><br />
            <span class="smalltext" class="value">Dedicated  server v01.00.10.0621</span><br /><br />
            </div>
            <table >
              <tr>
                <td>
                  Address: <strong><a href="halogame.com:2302">halogame.com:2302</a></strong><br />
                  This is a <strong>public</strong> server<br />
                  There are <b>1</b> / <b>16</b> players<br />
                  Current game is <b>CTF</b> (CTF)<br />
                  The Frag/Score Limit is <b>3</b>
                </td>
                <td valign="top">
                  <div align="center" class="value"><strong>Team Scores:</strong><br />
                  <span class="red"><b>Red Team: 0</b></span><br /><span class="blue"><b>Blue Team: 0</b></span></div>
                </td>
              </tr>
            </table>
            </div>
          </td>
          <td>
            <div align="center" class="value"><a href="http://hce.halomaps.org/index.cfm?search=Bloodgulch"><img src="images/maps/bloodgulch.jpg"   id="map_illustration" ></a><br />
            <strong>Bloodgulch</strong></div><br />
          </td>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td background="images/hp_tablebg.jpg"><img src="images/hp_playerinfo.jpg"   /></td>
  </tr>
  <tr>
    <td background="images/hp_tablebg.jpg" style="padding-left: 35px; padding-right: 50px;"><table  border="0" cellpadding="3">
    <tr>
        <td  class="bigbold" align="center">
            Player Name
        </td>
        <td  class="bigbold" align="center">
            Score
        </td>
        <td  class="bigbold" align="center">
            Team
        </td>
    </tr>
    <tr>
        <td  align="center">
            somedude
        </td>
        <td  align="center">
            0
        </td>
        <td  align="center">
            <span class="red"><strong>RED</strong></span>
        </td>
    </tr>
</table></td>
  </tr>
  <tr>
    <td><img src="images/hp_bottom.jpg"   /></td>
  </tr>
</table>
        <br />

    </body>
</html>

有谁知道我如何解决 http 403 问题?并让我的代码将表格值粘贴到聊天中?

编辑:通过 403 现在卡在 401:

Traceback(最近一次调用最后一次): _run_event 中的文件“C:\Python36_64\lib\site-packages\discord\client.py”,第 307 行 来自 getattr(self, event)(*args, **kwargs) on_message 中的文件“halobot.py”,第 43 行 等待 client.send_message(message.channel, content=stringdata) 文件“C:\Python36_64\lib\site-packages\discord\client.py”,第 1152 行,在 send_message 中 数据 = self.http.send_message 的收益(channel_id,内容,guild_id=guild_id,tts=tts,embed=embed) 文件“C:\Python36_64\lib\site-packages\discord\http.py”,第 200 行,在请求中 引发 HTTPException(r, 数据) discord.errors.HTTPException: UNAUTHORIZED (状态码: 401): 401: Unauthorized

【问题讨论】:

【参考方案1】:

您的请求缺少请求标头。您必须指定 Web 服务器允许您连接的 User-Agent 标头。

【讨论】:

有一个新问题。 401 未经授权的code url = "http://chiperdilly.com/cestatstext/index.php?ip=chiperdilly.com&amp;port=2302" html = urlopen(Request(url, headers='User-Agent': 'Mozilla')) mystr = print(html.read().decode('utf-8')) code 这是我的修改。

以上是关于不和谐和机器人制作:我似乎无法让我的机器人发布网络解析材料的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的机器人消息响应特定频道中的命令

制作 Discord 循环

不会让我运行 node 。在 vsc 终端(制作不和谐机器人)

如何解决此不和谐音乐机器人错误?

我无法让我的新机器人“imagesearch”工作,正在寻求帮助

使用 discord.py 让用户对我不和