You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pydroid 3中使用Keyboard库报错需Root权限问题求助

问题原因

你用的keyboard库在Linux(安卓基于Linux内核)环境下必须获取root权限才能控制系统键盘,但Pydroid3没法拿到root权限,所以触发了ImportError。

解决方案

别用模拟键盘的方式了,改用Discord官方API直接发消息,既不用root权限,还更稳定。步骤如下:

  1. 打开Pydroid3的包管理器,搜索安装discord.py库
  2. 替换成下面的代码:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:40:08