Paste #65738: Diff note for paste #65737

Date: 2020/02/29 08:03:46 UTC-08:00
Type: Diff Report

View Raw Paste Download This Paste
Copy Link


 tag_parser_bot:
     type: world
     debug: false
     script_paths:
         stop_bot:
         - if <server.has_flag[tag_parser_bot_running]>:
           - discord id:tag_parser disconnect
           - flag server tag_parser_bot_running:!
         start_bot:
         - inject locally script_paths.stop_bot
         - yaml load:data/tag_parser.yml id:tag_parser_temp
         - if !<yaml.list.contains[tag_parser_temp]>:
           - debug error "Load failed."
           - stop
         - flag server tag_parser_logpath:<yaml[tag_parser_temp].read[bot.discord.log_path]>
         - flag server tag_parser_validchannels:!
         - flag server tag_parser_validchannels:|:<yaml[tag_parser_temp].read[bot.discord.valid_channels]>
         - flag server tag_parser_barredchannels:!
         - flag server tag_parser_barredchannels:|:<yaml[tag_parser_temp].read[bot.discord.barred_channels]>
         - flag server tag_parser_barredchannelmessages:!
         - flag server tag_parser_barredchannelmessages:|:<yaml[tag_parser_temp].read[bot.discord.barred_channel_messages]>
         - flag server tag_parser_link:<yaml[tag_parser_temp].read[script.link]>
         - define link <server.flag[tag_parser_link]>
         - define samples "li@link/<[link].escaped>|sample_bool/true|sample_0/0|sample_1/1|sample_10/10|sample_0p5/0.5"
         - define samples "<[samples]>|sample_text/Hello, world!|help/try typing 'help' to the bot!"
         - define samples "<[samples]>|version/<server.version.escaped>|denizen_version/<server.denizen_version.escaped>"
         - flag server tag_parser_samples:!
         - flag server tag_parser_samples:|:<[samples]>
         - discord id:tag_parser connect code:<yaml[tag_parser_temp].read[bot.discord.token]>
         - yaml unload id:tag_parser_temp
         - flag server tag_parser_bot_running
         process_tag:
         - log "<util.date.time> [<[name]>] in [<[origin]>] wants to process tag <[tag]>" file:<server.flag[tag_parser_logpath]>
         - flag server tag_parser_result_temp:!
         - run locally script_paths.tag_run_path instantly def:<[tag]>
         - define result <server.flag[tag_parser_result_temp]||FAILED=FLAG_MISSING;>
         - flag server tag_parser_result_temp:!
         - log "<util.date.time> [<[name]>] in [<[origin]>] got result <[result]>" file:<server.flag[tag_parser_logpath]>
         crunch_result:
         - define final_result <empty>
         - foreach <[result].split[;]>:
           - if <[value].starts_with[VALID=]>:
             - define final_result "<[final_result]><[value].after[VALID=].replace[&sc].with[;]><n>"
         - foreach <[result].split[;]>:
           - if <[value].starts_with[FAILED=ERROR/]>:
             - define final_result "<[final_result]>Had error: <[value].after[FAILED=ERROR/].replace[&sc].with[;]><n>"
           - else if <[value].starts_with[FAILED=EXCEPTION/]>:
             - define final_result "<[final_result]>Had internal exception: <[value].after[FAILED=EXCEPTION/].replace[&sc].with[;]><n>"
           - else if <[value].starts_with[FAILED=]>:
             - define fail_reason <[value].after[FAILED=]>
             - if <[fail_reason]> == FLAG_MISSING:
               - define final_result "<[final_result]>Got no result value.<n>"
             - else:
               - define final_result "<[final_result]>Got failure '<[fail_reason]>'.<n>"
         - if <[final_result].trim.length> == 0:
           - define final_result <empty>
         - if <[final_result].length> > 1000 || <[tag].length.add[<[final_result].length>]> > 1500:
           - define tag "(Spam)"
           - define final_result "Input too long, refused."
         - if <[final_result].to_list.filter[is[==].to[<n>]].size> > 10:
           - define final_result "Newline spam, refused."
         tag_run_path:
         - define samples <server.flag[tag_parser_samples]>|sample_player/<player>|sample_npc/<npc>
         - foreach <[samples]>:
           - define <[value].before[/]> <[value].after[/].unescaped>
         - define help "Tell me any valid Denizen (Bukkit) tags, like <&lt>player.name<&gt> and I'll parse them for you! Alternately, tell me a valid definition name (like 'samples') and I'll tell you its contents."
         - if !<[1].unescaped.contains[<&lt>]> && <[<[1].unescaped>].exists>:
           - flag server tag_parser_result_temp:VALID=<[<[1].unescaped>].escaped.replace[;].with[&sc]>;<server.flag[tag_parser_result_temp]||>
         - else:
           - run instantly tag_run_task def:<[1]>
     events:
         on server start:
         - wait 5s
         - flag server tag_parser_bot_running:!
         - inject locally script_paths.start_bot
         on script generates error:
         - flag server tag_parser_result_temp:FAILED=ERROR/<context.message.escaped.replace[;].with[&sc]>;<server.flag[tag_parser_result_temp]||>
         on script generates exception:
         - flag server tag_parser_result_temp:FAILED=EXCEPTION/<context.type.escaped.replace[;].with[&sc]>-<context.message.escaped.replace[;].with[&sc]>;<server.flag[tag_parser_result_temp]||>
         on discord message received for:tag_parser:
         - flag server tag_parser_bot_running
         - if <yaml.list.contains_text[tag_parser_temp]>:
           - yaml unload id:tag_parser_temp
         - define name <context.author_id>/<context.author_name.escaped>
         - define origin <context.group>/<context.channel>/<context.group_name.escaped>/<context.channel_name.escaped>
         - announce to_console "Discord chatter! [<[name]>] in [<[origin]>] saying <context.message> and mentioning <context.mentions>"
-        - if !<context.mentions.contains[<context.self>]>:
+        - if !<context.mentions.contains[<context.bot.self_user>]>:
           - stop
         - if !<server.flag[tag_parser_validchannels].contains[<context.channel>]>:
           - define found <server.flag[tag_parser_barredchannels].find[<context.channel>]>
           - if <[found]> > 0:
             - discord id:tag_parser message channel:<context.channel> "Cannot parse that in this channel! <server.flag[tag_parser_barredchannelmessages].get[<[found]>]>"
           - stop
         - define tag <context.no_mention_message.replace[<n>].with[<&sp>].trim.escaped>
         - inject locally script_paths.process_tag player:<server.list_players.get[1]> npc:<server.list_npcs.get[1]>
         - inject locally script_paths.crunch_result
         - discord id:tag_parser message channel:<context.channel> "Tag parse results for `<[tag].unescaped.replace[`].with[']>`<&co><n>```<n><[final_result].unescaped.replace[`].with[']>```"
 
 tag_run_task:
     type: task
     definitions: tag
     script:
     - flag server tag_parser_result_temp:VALID=<[tag].unescaped.parsed.escaped.replace[;].with[&sc]>;<server.flag[tag_parser_result_temp]||>
-
-