为了测试 WikiPedia Python 机器人的功能,我们使用了 预配置的电报机器人服务器. 该机器人可以响应维基百科数据库中包含的查询并发送响应信息。
让我们继续安装:
source my-tel-bot/bin/activate
pip3 install wikipedia
让我们用现有的演示机器人替换我们的演示机器人:
/root/my-tel-bot/bot.py
import telebot, wikipedia, re
# 创建机器人的实例
bot = telebot.TeleBot('')
# 在维基百科中安装俄语
wikipedia.set_lang("ru")
# 我们清理维基百科中的文章文本并将其限制在一千个字符内
def getwiki(s):
try:
ny = wikipedia.page(s)
# 获取前一千个字符
wikitext=ny.content[:1000]
# 按点分割
wikimas=wikitext.split('.')
# 丢弃最后一点之后的其余部分
wikimas = wikimas[:-1]
# 为文本创建一个空变量
wikitext2 = ''
# 我们遍历没有等号的行(即,除了标题之外的所有内容)
for x in wikimas:
if not('==' in x):
# 如果字符串中剩余超过三个字符,我们将其添加到变量中,并返回将字符串拆分到位时丢失的点
if(len((x.strip()))>3):
wikitext2=wikitext2+x+'.'
else:
break
# 现在,在正则表达式的帮助下,我们删除了标记
wikitext2=re.sub('\([^()]*\)', '', wikitext2)
wikitext2=re.sub('\([^()]*\)', '', wikitext2)
wikitext2=re.sub('\{[^\{\}]*\}', '', wikitext2)
# 返回文本字符串
return wikitext2
# 处理维基百科模块在请求时可能返回的异常
except Exception as e:
return '百科全书中没有这方面的信息'
# 处理命令的函数 /start
@bot.message_handler(commands=["start"])
def start(m, res=False):
bot.send_message(m.chat.id, '给我任何单词,我会在维基百科上查找它')
# 接收来自用户的消息
@bot.message_handler(content_types=["text"])
def handle_text(message):
bot.send_message(message.chat.id, getwiki(message.text))
# 启动机器人
bot.polling(none_stop=True, interval=0)
完成后,不要忘记在脚本中指定您的密钥令牌并重新启动服务:
service my-tel-bot restart
暂时没有评论