- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个Discord机器人,并直接直接登录到它所在的Discord服务器,但是discordrb gem本身拒绝让我自己拯救该块。
begin
require 'discordrb'
phoenix = Discordrb::Bot.new token: 'TOKEN'
crashpass = rand(0..9999999)
puts "Crash password: #{crashpass}" #Prints to the terminal screen, not to the server
phoenix.message(with_text: "CP!crash #{crashpass}") do
raise "Admin initiated crash."
end
rescue Exception #I know, bad practice, but I wish for this to always execute on error.
ensure
phoenix.run :async #allows code to keep running after bot initialization
phoenix.dnd
phoenix.send_message(454137675944034314, "Something terrible has happened, and I can't recover!\n#{e}")
phoenix.send_message(454137675944034314, "Currently running in emergency mode!")
phoenix.sync
end
Using WSCS version: 0.3.0
libsodium not available! You can continue to use discordrb as normal but voice support won't work.
Read https://github.com/meew0/discordrb/wiki/Installing-libsodium for more details.
Crash password: 6736731
[INFO : websocket @ 2018-06-07 19:04:57.517] Discord using gateway protocol version: 6, requested: 6
[ERROR : et-1 @ 2018-06-07 19:05:33.326] Exception: #<RuntimeError: Admin initiated crash.>
[ERROR : et-1 @ 2018-06-07 19:05:33.330] C:/Users/nathan/Desktop/Cyan_Phoenix local/bot.rb:19:in `block in <main>'
[ERROR : et-1 @ 2018-06-07 19:05:33.330] C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/discordrb-3.2.1/lib/discordrb/events/generic.rb:98:in `call'
[ERROR : et-1 @ 2018-06-07 19:05:33.330] C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/discordrb-3.2.1/lib/discordrb/bot.rb:1227:in `block in call_event'
最佳答案
这只会阻止您在phoenix
内部抢救异常。
require 'discordrb'
phoenix = Discordrb::Bot.new token: 'TOKEN'
phoenix.run :async
begin
raise "Error here!"
rescue Exception
puts "Got exception!"
end
phoenix.message(with_text: "CP!crash #{crashpass}") do
raise "Admin initiated crash."
end
phoenix
DiscorrRb::Bot
实例内部引发,该实例具有自己的错误处理,因此在后台运行时引发的异常(例如,在发生任何连接错误后重新连接)将在此处得到处理,而不会使应用程序的其余部分崩溃。
Discordrb::Logger
。但是,我认为这不是很有用,因为
Discordrb::Bot
异步代码中引发的异常很可能会在连接停止工作并且无法将异常消息发送给不和谐的情况下发生,从而导致无限循环/堆栈溢出,其中将异常消息发送到discord会导致异常,因为discord连接已断开。
Discordrb::Bot
的代码),则没有什么可以阻止您编写类似以下内容的代码:
phoenix.run :async
loop do
begin
score = calculate_score
phoenix.send_message(channel_id, "Score : #{score}")
rescue => ex
phoenix.send_message(
channel_id,
"crash while calulcating score! #{ex.class} : #{ex.message}"
)
sleep 10
retry
end
sleep 10
end
phoenix.message(with_text: "score?") do |event|
begin
score = ScoreCalc.calculate_score
event.respond("Score : #{score}")
rescue => ex
send_message(454137675944034314, "CRASHED! #{ex.class}: #{ex.message}")
send_message(454137675944034314, ex.backtrace.join("\n"))
event.respond "Sorry, there was a problem and it has been reported"
end
end
关于ruby - ruby gem 阻止我救援,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50737299/
我有以下代码: try do IO.inspect("start task") t = Task.async(fn -> Process.sleep(7000) end) IO.insp
问题与 radis-rb gem 有关。 异常没有被我的救援 block 捕捉到,我的应用程序崩溃了。 我的代码: begin redis = Redis.new puts "WTF?" re
我的 Rakefile 中有许多文件任务,它们看起来像 file 'task1' => 'dep' do sh "some command" end 还有 task :start => :next
我有一个自定义 Rakefile,它调用不同的 file 任务。有时预期的文件不存在,并且 rake 抛出 RuntimeError 并失败。但是,我想在它失败之前做一些事情。那么有什么方法可以挽救
这对我来说似乎没问题,我找不到任何其他说明的文件,但我希望它得到验证。我有一段代码可能会失败,无论出于何种原因,如果它确实失败,请确保在它之后保护它,然后无论发生什么都需要执行一些代码。这似乎需要一个
使用 Action 邮件发送电子邮件时,我们遇到了生产问题。 NameError undefined local variable or method `to_ary' for # Did you m
我有这个创建方法: def create ... grid = Tag.find_by_id(story[:tag_id]) or raise GridNotFoundError
我正在学习 ZetCode 上非常棒的 SLite & Ruby 教程并遇到了一个愚蠢的问题。这到底是怎么回事? rescue SQLite3::Exception => e puts "Ex
如何捕获 ctrl-break 组合键引发的异常?我在 Windows 上运行一个 ruby 程序(在 cmd.exe 内),我用这样的东西捕获 ctrl-c : rescue Interrupt
背景 两者 try/rescue和 try/catch是 Elixir 中的错误处理技术。根据 corresponding chapter在介绍指南中。 Errors can be rescued u
我在 Rails 应用程序上安装了 Airbrake。但是,我还想在 500 发生时执行一些其他操作。如何在不干扰 Airbrake 的情况下挽救 500 个错误? 最佳答案 在 Applicatio
我有一个与这段代码相当的情况: i=0 def add_one(i) i+=1 puts "FUNCTION:#{i}" end begin puts "BEGIN:#{i}" rai
我一直在尝试在 Rails 应用程序中实现以下功能,但它似乎什么也没做: rescue Twilio::REST::RequestError => e puts e.message 我注意到它
用户只能编辑自己的帖子,因此我使用以下代码来检查用户是否可以进入编辑表单: def edit @post = Load.find(:first, :conditions => { :use
在尝试解析数组、AR 模型导入等时,CSV 文件有问题似乎是一个常见问题。除了在 MS Excel 中打开并另存为 之外,我还没有找到有效的解决方案> 每天(还不够好!)。 在一个 60,000 行的
我最近使用 Debian Wheezy 双启动了一台 Windows PC。安装顺利,没有错误,但是当我启动到 Debian 时,我立即收到 GRUB 救援: Welcome to GRUB! err
我已按照说明安装 resque,但现在当我尝试使用此命令生成 worker 时,出现连接错误: $ QUEUE=mailer rake environment resque:work --trace
我是一名优秀的程序员,十分优秀!