Python编写Discord机器人时如何实现随机返回Youtube搜索视频
修改方法
- 第一步:在代码文件头部引入Python内置的随机模块
引入代码:import random - 第二步:调整结果选取逻辑,将固定取第一个结果的写法替换为随机选取列表内的元素,同时建议增加空结果判断避免无搜索结果时触发程序异常。
修改后完整代码示例
import random import urllib.parse import urllib.request import re # 原有搜索逻辑不变 channel = bot.get_channel(901718257864691743) query_string = urllib.parse.urlencode({'search_query': message.content}) htm_content = urllib.request.urlopen( 'http://www.youtube.com/results?' + query_string) search_results = re.findall(r'/watch\?v=(.{11})', htm_content.read().decode()) # 新增空结果判断+随机选取逻辑 if search_results: random_video = random.choice(search_results) await channel.send('http://www.youtube.com/watch?v=' + random_video) else: await channel.send('未搜索到对应内容')
实现说明
random.choice()是Python内置的随机方法,可以从传入的非空序列中随机返回一个元素,刚好满足随机选取一条搜索结果的需求。新增的空结果判断可以避免无匹配搜索内容时,程序取列表元素触发索引异常导致机器人崩溃。
内容的提问来源于stack exchange,提问作者Eternal Eternus
相关产品推荐
相关产品推荐

