Pydroid 3中使用Keyboard库报错需Root权限问题求助
问题原因
你用的keyboard库在Linux(安卓基于Linux内核)环境下必须获取root权限才能控制系统键盘,但Pydroid3没法拿到root权限,所以触发了ImportError。
解决方案
别用模拟键盘的方式了,改用Discord官方API直接发消息,既不用root权限,还更稳定。步骤如下:
- 打开Pydroid3的包管理器,搜索安装
discord.py库 - 替换成下面的代码:
import discord import random as rd import time as tm from discord.ext import commands # 替换成你自己的Discord机器人Token TOKEN = "你的机器人Token" # 替换成要发消息的频道ID(要开Discord开发者模式才能查看) CHANNEL_ID = 123456789012345678 bot = commands.Bot(command_prefix="!", intents=discord.Intents.all()) @bot.event async def on_ready(): print(f"已登录为 {bot.user}") channel = bot.get_channel(CHANNEL_ID) x = 0 tm.sleep(10) z = x + 20 while True: x += 1 message_content = str(x) # 随机添加错误内容 if rd.randint(1, 20) == 1: if rd.choice([True, False]): # 添加相邻数字错误 wrong_digit = rd.randint(min((x-1)%10, (x+1)%10), max((x-1)%10, (x+1)%10)) message_content += str(wrong_digit) else: # 添加反斜杠错误 message_content += "\\" await channel.send(message_content) # 触发长时间休眠的条件(原代码里的and 0是无效逻辑,已修正) if x == z: tm.sleep(100) z = rd.randint(z + 100, z + 500) tm.sleep(2) bot.run(TOKEN)
关键说明
- 得去Discord开发者平台创建一个机器人,获取Token,还要把机器人邀请到你的服务器(需授予它发送消息的权限)
- 开启Discord的开发者模式,才能复制到目标频道的ID
- 原代码中的
if x == z and 0是无效判断,永远不会触发休眠逻辑,已经修正为正常的条件判断
要是你非要坚持模拟键盘输入,安卓系统限制非root应用访问系统输入事件,没有靠谱的实现方式,所以更推荐用API直接发送消息的方案。
内容的提问来源于stack exchange,提问作者Master's Time
相关产品推荐
相关产品推荐

