Python Discord.py `time.sleep()` 协程

2024-02-05

import discord

import os
import random
import time
import math


client = discord.Client()

with open('admins.conf', 'r') as f:
    for line in f.readlines():
        exec(line)
with open('bans.conf', 'r') as f:
    for line in f.readlines():
        exec(line)
with open('coins.conf', 'r') as f:
    for line in f.readlines():
        exec(line)

random.seed(os.urandom(32))
searchusers = []

@client.event
async def on_ready():
    '''Notification on ready.'''
    print('Logged in! Bot running.')
    await client.change_presence(activity=discord.Game(name='/help'))

def getcoins(uid):
    '''Get the amount of coins, if nonexistent set to 0.'''
    try:
        return coins[uid][0]
    except Exception:
        coins[uid] = [0, time.time()+20]
        return 0

def mention_to_uid(mention):
    '''Extract UID from a mention'''
    uid = mention[2:-1]
    if uid[0] == '!':
        uid = uid[1:]
    return uid

def setcoins(uid, value):
    '''Set the amount of coins someone has.'''
    try:
        coins[uid][0] = value
    except Exception:
        coins[uid] = [value, time.time()+20]
    with open('coins.conf','w') as f:
        f.write('coins = '+repr(coins))

@client.event
async def on_message(message):
    '''Main bot code running on message.'''
    if message.author == client.user:
        return
    if message.author.id in bans:
        return
    if message.content.startswith('/') or message.content.startswith('&'):
        user = message.author.id
        text = message.content[1:].strip()
        command = text.split(' ')[0]
        subcommand = text.split(' ')[1:]
        if message.author.id in searchusers:
            await message.channel.send('<@'+str(message.author.id)+'>, you cannot use bot commands while you are searching.')
            return

-------------------- snip --------------------

        if command == 'search':
            await message.channel.send('<@'+str(user)+'>, you have begun searching! It will take 2 minutes.')
            searchusers.append(user)
            time.sleep(59.99)
            await message.channel.send('<@'+str(user)+'>, there is 1 minute left.')
            time.sleep(39.99)
            await message.channel.send('<@'+str(user)+'>, there are 20 seconds left!')
            time.sleep(14.99)
            await message.channel.send('<@'+str(user)+'>, there are 5 seconds left!')
            time.sleep(4.99)
            found = random.randint(50, 120)
            await message.channel.send('<@'+str(user)+'>, you are done searching! You found '+str(found)+' coins!')
            setcoins(user, getcoins(user)+found)
            searchusers.remove(user)

在 time.sleep() 事件期间,其他机器人命令在 sleep 函数通过之前不会注册。例如,在执行 /search 后立即执行 /help 之类的命令,机器人直到一分钟后才会响应,此时它将响应 /help 并显示还剩 1 分钟的消息。我尝试在每个睡眠函数之前添加“await”,但它只是向我发出运行时警告并停止执行(它只是说您开始搜索,然后什么也没有发生)。


time.sleep()停止程序的整个执行。如果您只想延迟一个异步响应线程,请使用asyncio.sleep

Example:

import asyncio

async def wait():
    await asyncio.sleep(5)
    print('I waited 5 seconds')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Discord.py `time.sleep()` 协程 的相关文章

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • 在 Windows 窗体用户控件中嵌入 XNA 游戏

    我写了一个简单的 XNA 4 0 游戏 我想制作一个 Windows 窗体用户控件来渲染此游戏 并向 XNA 提供必要的交互反馈 键盘和鼠标 我已经尝试过以下方法 In XNA 将 XNA 的 Game GraphicsDevice 重定向
  • get_the_id 与 post->ID 与 the_id / get_post_meta

    我认为这一定是一个非常基本的问题 但我才刚刚开始 有人可以看一下下面相同 代码的 3 个版本并说出有什么区别吗 所有这些似乎在我正在处理的循环中都工作得很好 应该使用哪个 post gt ID the ID or get the id 是否
  • 如何从 Delphi 的主线程向 TThread 发送消息?

    我想向一个线程发送消息并在线程中处理它 我怎样才能在德尔福中做到这一点 我猜PostMessage是要走的路 但到目前为止我看到的例子描述的是另一种方式 即从线程到主线程 我什至不会尝试解释或编写任何代码 看看这个教程就知道了 它有点旧 但
  • 在启用 PyCharm 插件的情况下使用 CLion 逐步执行 C++ 代码

    启用 PyCharm 插件后 我在 CLion 中遇到问题 这就是我所做的 从 shell 运行 Python 程序 该程序创建多个进程 如工作进程 其中 Python 代码调用我想要调试的 C 代码 从 CLion 附加到原始主 Pyth
  • 在 MySQL 列中查找双引号

    我想查找带双引号的数据 我有下一个简单的查询 SELECT FROM table name WHERE column name LIKE 但我有语法错误 You have an error in your SQL syntax check
  • 在单个系统上运行客户端/服务器程序

    我想知道是否有两个程序 一个叫做server另一个叫client这两个分别说明了服务器和客户端 是否可以在一台机器上测试它们 考虑到我定义客户端套接字如下 socket new Socket 127 0 0 1 3000 编辑 服务器部分
  • 未找到“Aws\Common\Aws”类 cakephp

    我在 cakephp 中使用 AWS PHP SDK V2 8 我正在 AWS ec2 ubuntu 机器上工作 我使用 zip 文件而不是任何作曲家 我收到以下错误 Class Aws Common Aws not found 我创建了一
  • 在自己的函数中响应导航 onPress

    我已经实现了教程中的 React Navigation 示例https reactnavigation org docs intro https reactnavigation org docs intro 而且效果很好
  • 在 Spring boot 中禁用自动提交不起作用

    我设置了两个参数以通过 False 禁用自动提交 但在没有提交事务的情况下保存实体操作 spring datasource hikari auto commit false spring jpa properties hibernate c
  • 在我的文本区域中显示降价

    我正在使用 BlueCloth 从用户输入文本区域的内容中通过 markdown 创建 html 如下所示 def create post Post new params post do post body BlueCloth new po
  • 我的 Android 应用程序 ViewPager 中 PagerTabStrip 的自定义字体颜色

    我需要更改 Android 应用程序 ViewPager 中 PagerTabStrip 的字体颜色 这是相同的 xml 布局 我有什么办法可以做到这一点吗
  • 如何在Java中将文件/目录移动到回收站而不是永久删除它[重复]

    这个问题在这里已经有答案了 我正在尝试创建 GUI 示例 当用户单击按钮时删除文件和 或目录 但我看到文件被永久删除 如何使其移动到回收站而不是这个 if File path getText isEmpty JOptionPane show
  • NodeJS 文件系统观察抛出事件两次或更多次

    我正在 Ubuntu 上使用以下命令查看 NodeJS 服务器的配置文件 for var index in cfgFiles fs watch cfgFiles index function event fileName logger in
  • python argparse子命令具有依赖性和冲突

    我想使用 argparse 来构建一个带有子命令的工具 可能的语法可以是 tool py 下载 from 1234 interval 60 tool py 下载 build 1432 tool py clean 数字 10 所以我想使用ar
  • iOS AVExportSession 仅因修剪视频而失败

    我创建了一种根据给定时间范围修剪和导出视频的方法 它还会将视频旋转为横向 但由于某种原因 AVAssetExportSession 在尝试处理之前使用 UIVideoEditorController 修剪的视频时失败 以前有人遇到过这个问题
  • Errno::EACCES:运行捆绑包时权限被拒绝,它命中 json 1.8.1,pg 0.17

    我刚刚买了一台新笔记本电脑 并使用迁移助手完全转移了所有内容 似乎一切正常并且处于适当的位置 所以我不知道这是否是问题所在 我对调试这样的环境错误还很陌生 我一直在 Windows 上开发一个 Rails 项目 这台笔记本电脑是 Mac O
  • Python 字符串中的 u'\ufeff'

    我收到错误并显示以下异常消息 UnicodeEncodeError ascii codec can t encode character u ufeff in position 155 ordinal not in range 128 不知
  • JScrollPane 中的滚动更平滑

    使用 JScrollPane 的滚动条箭头进行滚动 或通过为箭头键设置键绑定 将视口移动一个增量 暂停 然后平滑滚动 我遇到的大多数滚动条的行为都是一样的 有轻微的移动 暂停 然后更快地连续滚动 有什么方法可以避免暂停 以便滚动从开始到结束
  • C 中的重音/元音字符?

    我刚刚学习 C 语言 并接到了一项作业 要求我们将纯文本翻译成莫尔斯电码 然后再翻译回来 我最熟悉 Java 所以请耐心等待我使用的术语 为此 我有一个包含所有字母字符串的数组 char letters etc 我编写了一个函数来返回所需字
  • Python Discord.py `time.sleep()` 协程

    import discord import os import random import time import math client discord Client with open admins conf r as f for li