Image

(最后一次变更: 04.05.2024)

为了测试 WikiPedia Python 机器人的功能,我们使用了 预配置的电报机器人服务器. 该机器人可以响应维基百科数据库中包含的查询并发送响应信息。

让我们继续安装:

source my-tel-bot/bin/activate
pip3 install wikipedia

让我们用现有的演示机器人替换我们的演示机器人:

/root/my-tel-bot/bot.py

import telebot, wikipedia, re

# 创建机器人的实例
bot = telebot.TeleBot('密钥来自 @BotFather')

# 在维基百科中安装俄语
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



暂时没有评论